您的位置:首页 > 其它

如何走进嵌入式开发[3] -- 烧录bootloader

2009-10-31 19:37 316 查看
在拿到一块空白板子时,我们的bootloader如何烧到FLASH上呢? 一个途径就是通过仿真器,ARM有高级仿真器,高级货是不错,不过我们选择穷人的方式,也是个仿真器,至于是啥,网上一搜一大堆,jlink, openjtag, usb...,东西很多,国内便宜(大家都知道)。按照标准,其实这些叫作适配器,反正就是一接口,连上去就好了,对了,是JTAG接口。

以前不懂的时候,以为接上就能烧了?谁来烧呀?CPU烧?烧什么呀? 后来看了文档才知道,这些CPU一般都有个调试模式,在调试模式下,CPU外面多了一层引脚,信号都走这,与JTAG接口通信,我们就可以通过JTAG接口,对CPU进行操作,可读可写。

如果我们想读一个寄存器值,我们该发什么信号给CPU呢?这些都在CPU手册上有,我要说的不是这个,我想说的是,前辈已经写了软件来做这些工作,需要啥信号,我们就不用关心了,需要的只是传个命令过去,比如 read addr之类的,这类软件应该很多,我们又选择了 OpenSource的 OpenOCD, 这个软件还是不错了,开发人员很勤奋,maillist天天都有很多邮件。 如果我们的CPU在该软件的支持的范围内,那么我们需要做的事情就是写写配置文件,否则就需要写些CPU支持的 c 代码了。配置文件,主要部分配置CPU,FLASH BANK(地址宽度很重要)等,让CPU能操作FLASH,也就是你得告诉CPU如何工作,其实就是设置寄存器。软件运行起来,需要把CPU挂起,有时候会出现不能挂起的情况(有的是无缘无故,有的是由于reset时的信号不太对,这点一直没弄清楚,jtag信号),暂停MMU,之后就可以烧啦。看着手册大家都能烧。

bootloader烧好了,就可以启动了,之后烧内核什么的,似乎大家都是通过bootloader来做的,我也是。

BTW:烧录FLASH,还有种 socket 方式,这种FLASH可拆卸,取下来,插到专门烧写器里,也可以完成烧录。其他的方法我也没总结过,也没用过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: