在LinuX下玩耍TI(Luminary) LM3S8962评估开发板
[复制链接]
这段日子弄来一块 Luminary(被TI搞定)的LM3S8962开发板 (板子的照片可以在这个帖子里找到)
原来曾经告诉过自己, 不要玩其它32位mcu了, 因为已经有nios2。 但是现在既然已经有了这块板, 为什么不玩玩呢? 而且Cortex M3摒弃前辈的一些老旧特性(全新的指令集无须来回切换, 更高级的中断管理, 更加电池友好……), 此外LM3S8962绑定了很多高级外设。
不说废话了, 下面正题。 ====================== 我之前没有搞过ARM, 但是玩过STM32/ AVR/ 51/ nios2/ Rabbit等等单片机/SOPC。 没想到搞ARM的工具链居然还耗费了我整整2天时间!(目前还不能说彻底搞定)。
首先解决“烧录”软件。 经过阅读文档, 得知这款板子已经板载了一个调试、下载器。 于是一番本地+google搜索, 发现一个很酷的开源软件“openocd”。用它可以进行对很多ARM/MIPS芯片的调试。 用直接用apt-get装
目前的版本是 0.3.1 (2009-11-25-13:34)。
装好后, 发现openocd是需要配置文件的, 在当前的版本中, 没有包括LM3S8962的直接支持…… 再次经过乱七八糟的搜索东拼西凑, 终于凑出来一个可以用的配置文件啦! 以后再慢慢研究好了。 先上文件。
lm3s8962[1].cfg.rar
(748 Bytes, 下载次数: 25)
然后插入板子(usb接口……废话), 运行下面的命令:
openocd -f ~/lm3s8962.cfg
应该就可以正常连入系统啦! 此时openocd会建立一个本地的socket监听端口, 默认端口号是4444, 在另外一个terminal里用telnet/ netcat等工具就能链入。 下面的这个截图, 显示了这个过程, 并且在telnet/netcat中下了多条调试指令
openocd有在线的文档, 用help就能看到指令, 此外openocd也有html/ man等格式的文档, 比较完备。
=================== 下载工具解决了, 现在是编译工具链
貌似ARM有很多开发环境/toolchain, 但是对于我这个铁杆迷信GNU的人来说, 放着GCC不用去整其它要钱的破编译器是不可能的。GNU有ARM的ports! 我这里有一份来自Uwe Hermann的安装脚本, 可以自动获取arm-gcc工具链(binutils/ gcc/ newlib/ gdb)。
get-arm-toolchain[1].sh.rar
(819 Bytes, 下载次数: 8)
从源代码编译倒没有什么难度, 但是不知道为什么编译出来的东西不能正常编译固件库(和hardware/software FP有关), 这个问题我暂时没有去解决(留待高手或者我日后有空自己搞定)。 幸运的CodeSourcery公司已经为我们准备好了一套可用的版本。 CodeSourcety提供多个mcu平台的统一界面的IDE, 可惜是eclipse的, 鄙人无视java的一切, 所以只使用它们的 Sourcery G++ Lite版本, 免费而且基于命令行, 我喜欢。 可以从这里下载: codesourcery提供的gcc-arm-toolchain
至此, 其实已经可以开始编程、下载了。
======================== 不过……
本人初学Cortex, 而且ARM比AVR又复杂多了(我写AVR程序, 都是对着datasheet查询寄存器的……), 让我立刻对着文档搞定那么多寄存器, 估计要好几周了, 等不起。 好在TI(Lu)为我们提供了“固件库”, 可以从这里找到LM3S的固件库 (需要注册才能下载) 它这个下载的包比较恶心, 其实一压缩包就搞定的, 但是非要提供个exe格式的。 用wine安装应当没有问题, 但是可能会留下乱七八糟的残留物, 所以我是在虚拟机里安装好了这个包, 然后将固件库文件复制到linux主系统。
这套固件库, 写得算是相当棒了! 里面又有丰富的example和文档。 继续学习cortex全靠这套库的源代码!
|