linux下使用CC Debugger读写芯片程序

有个事情一直困扰着我,我一般使用ubuntu linux系统,但当要用CC Debugger为TI的一些芯片烧写程序的时候,不得不切换到windows系统,太麻烦了,难道linux下不能用CC Debugger吗?我就带着这个问题问了一下谷哥,他果然什么都知道,得知cc-tool的存在,是一个老开源项目了,什么?我咋才知道呀!

嫌罗嗦可以直接点我跳过下面一段。

在github可以找到好多cc-tool项目,不过大部分都是fork别人的,其实追根溯源会发现此项目来自sourceforge,我是传送门,名为cctool,我试过其中一个,不过好久没更新了,下载下来尝试了一下,结果执行**./configure**时不能通过,提示libboost-all-dev版本太高,这是什么鬼?查看configure文件,大体知道是内部有这个依赖包的版本限制,只能说这个cctool太老了,然后又找到一个项目,这是fork自sourceforge的,可能就是作者本人的(我猜的,没去细究),在2015年10月份有更新过,尝试了一下,果然可以,查看15年10月份的commit,发现果然是修改了configure文件,不多说了,下面就说一下怎么编译安装和使用。

测试平台

  • Ubuntu系统
  • TI keyfob 开发套件(cc2541芯片)
  • CC Debugger

编译安装

本文使用github的dashesy的项目cc-tool,表示十分感谢!

下载源文件

切换到用户随便一个目录,比如Downloads,git拷贝下载,进入项目源文件目录。

cd ~/Downloads
git clone https://github.com/dashesy/cc-tool.git

然后,

cd cc-tool-master

安装依赖包

sudo apt-get install libusb-1.0 libboost-all-dev

配置编译安装

  • 配置

    ./configure
    
  • 编译

    make
    
  • 安装

    sudo make install
    
  • 由于linux对usb设备访问有权限限制,所以还需要将项目文件中的udev下的90-cc-debugger.rules拷贝到/etc/udev/rules.d目录下,然后重启电脑。(如果不拷贝rule文件可以在每次使用cc-tool时加上sudo)

    sudo cp udev/90-cc-debugger.rules /etc/udev/rules.d/
    

使用

如果一切顺利的话,此时你应该将cc-tool安装成功,可以用man命令查看如何使用。

# Read entire flash into binary file image.xxx
# 读取整个Flash保存为image.xxx文件
cc-tmool -r image.xxx,bin
# Erase flash, write intel hex file image.hex and verify flash using default method
# 擦出flash,使用默认方法烧写intel hex格式的hex文件,并验证flash
cc-tool -v -e -w image.hex
# Merge file image.hex and patch.bin (at offset 80), write  resulting  image,  verify  flash using read method
# 合并image.hex和偏移地址在0x80的patch.bin,并进行烧写,使用读模式验证flash
cc-tool -v read -w image.hex --write patch.bin,80
# Set debug lock bit
# 设置调试加锁位
cc-tool --lock debug
# Set debug lock bit and lock pages 0,1,2,3,4
# 设置调试加锁位,为0,1,2,3,4页加锁 
cc-tool --lock debug;pages:0-4
# Set debug lock bit, boot lock bit, and set lock size 8K
# 设置调试加锁位、启动加锁位,设置加锁大小为8k
cc-tool --lock debug;boot;flash:8