硬件工程师的软件之路—— ARM板卡的调试流程
来源:互联网 发布:js obj 获取value 编辑:程序博客网 时间:2024/04/30 11:54
文章呢,是写给我这样的软件新人和广大涉及底层调试的硬件工程师的。软件大神们姑且略过吧。
先描述一下状况:公司其它的工程师画了一块S3C6410的板子,外设就是一个USB口,一个DM9000 ,521MB的NAND,512MB的DDR。
我手头有天嵌6410的板子,于是乎想按照天嵌的流程搞定这件事,当然这不太太现实,天嵌的方式是SD卡直接烧写。我怎么办呢?
第一步,搞清天嵌的SD卡一键烧写原理
天嵌的流程:
1.向SD卡中写入U-boot,然后拷入一份U-boot,系统镜像和文件系统。板卡设置成SD卡启动后,上电。
2.板卡首先从SD卡启动U-boot,然后在U-boot环境下执行NANDFLASH的擦除命令。
3.然后将U-boot拷贝到内存中,再将内存中的U-boot拷贝到NANDFLASH里。
4.板卡将SD卡中的内核拷贝到内存中,再将内存中的内核拷贝到NANDFLASH里。
5.文件系统的操作也和上面的步骤一样。
源代码的真相在这里:
uboot_sourcecode\uboot1.1.6\common\main.c
ExecuteCmd("nand erase");擦除NANDFLASH
ExecuteCmd("fatload mmc 0:1 50008000 u-boot.bin");从SD卡中拷贝U-boot.bin到内存0x50008000
ExecuteCmd("nand write.uboot 50008000 0 200000");将U-boot写入到NANDFLASH的0x0地址上去
ExecuteCmd("fatload mmc 0:1 50008000 zImage");下面的大家自行脑补
ExecuteCmd("nand write.e 50008000 200000 500000");
ExecuteCmd("fatload mmc 0:1 50008000 rootfs.yaffs2");
ExecuteCmd("nand write.yaffs2 50008000 700000 $filesize");
6.断电后切换到NAND启动模式,就从NANDFLASH中启动了。
第二步,我的方法——Jlink调试
我的板卡上是没有SD卡的,显然这种方法不行。
我的方法是(当然啦,整个流程和天嵌的一样。应该这是个通法吧,我搞硬件的不太懂):
1. 先用Jlink向S3C6410的片上RAM中拷贝一段初始化代码,然后执行,这段代码要能够初始化外部的DDR。
2. 将移植好的U-boot拷贝到DDR中,并且执行。
3. 等U-boot起来之后,在串口控制台上,通过网口将U-boot拷贝到DDR的另一个地址(TFTP协议),然后擦除NANDFLASH,将U-boot放到NAND里
4.同理将内核和文件系统放进去。
这样一个模仿天嵌的启动方法的流程就完成了。中心思想就是用网口代替SD卡。好了,我娘叫我吃饭,对不住了,不能继续写了。大家其他的自行脑补,楼主实在人,不懂打我电话13333375715。移植U-boot啥的以后再和大家说。
- 硬件工程师的软件之路—— ARM板卡的调试流程
- 硬件工程师的系统开发之路
- 硬件/射频工程师的开启之路
- 硬件工程师的十个软件技巧
- 诊断之美-调试(Debug)的软件和硬件手段
- ARM软件访问硬件的核心理论
- 【DSP】 继续调试我的板卡!
- 硬件工程师之路上的8个软件必通绝招!!!
- 软件测试工程师的工作流程
- 嵌入式硬件开发流程及工程师应具备的基本技能
- 嵌入式硬件开发流程及工程师应具备的基本技能
- 硬件工程师的“钱途”
- 硬件工程师的必杀技
- 初学者之-ARM的开发硬件选择?
- 初学者之-ARM的开发硬件选择?
- 嵌入式工程师的硬件和软件道路选择
- 嵌入式工程师的硬件和软件道路选择 (精华)
- 嵌入式工程师的硬件和软件道路选择
- 快速排序、三路快排、双基准
- 序列化
- Candy
- iTunes Connect程序被拒,如何申诉?
- Excel中强大的数据导入功能
- 硬件工程师的软件之路—— ARM板卡的调试流程
- Linux 获取CPU温度
- js获取光标位置和设置文本框光标位置
- python抓取京东价格分析京东商品价格走势
- [LeetCode] Clone Graph
- PHP中设置时区方法小结
- PHP 时区设置
- php设置中国时区
- Swing 投影边框