在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3393|回复: 0

[原创] 利用J-link的ARM9下载器(支持Nand-flash)

[复制链接]
发表于 2013-12-4 18:44:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 ty198826 于 2013-12-4 19:37 编辑

对于已经有了J-link的人,有一个官方的软件可以下载程序,是SEGGER公司开发的。J-link可以支持大多数的Nor-flash的烧写和内存的读写等。但有一个最大的问题,就是J-link不支持Nand-flash的读写。对于现在的嵌入式来说,尤其对于那些开发板不带nor-flash的人来说,烧写裸板会很不方便,而且取消在Arm中的nor-flash也会减少制作开发板的成本。这样就很有必要利用J-link的特点来开发一款下载器,使得开发嵌入式的速度能够大大加快。

本下载器的功能如下:

支持多数Nor-flashNand-flash的下载

支持Nor-flashNand-flash U-boot的下载

支持Nand-flash内核的下载

支持Nand-flash文件系统的下载

支持串口通讯

具有部分串口终端的作用


本下载器的特点有:下载速度快,支持较多芯片的下载。由于测试条件有限,现阶段测试的芯片主要是基于ARM9平台下,主要的flash芯片有:

Nor-flashSST39VF1601Am29LV160DB28F128J3

Nand-flashHY27US08121K9F2G08


初期想法来源

刚开始是由于自己想要学习U-boot的移植,原来我买的开发板是ZY2440,不带Nor-flash,原来是用并口的wiggler下载器进行下载,但由于现在的笔记本都不带并口,所以这种方法在我的笔记本上不可行,而台式机又携带不方便。经过和同学的交流,我知道了还有一个J-link下载器,可以用在ARM的下载上,而且价格不贵,才30左右,比OpenJTAG180便宜的多,但jlink却不支持Nand-flash的下载,这未免让我有些失望。但通过在网上搜索资料,我发现有两种方法可以用J-link下载Nand-flash

    1.1 直接法:

通过j-link操作ARM的寄存器实现。但这种方法速度较慢,需要几分钟才能下载好一个200K左右的U-boot,更别说下载内核和文件系统了,还的需要其它的方式来下载内核和文件系统。对于学习U-boot移植来说,会大大影响效率。

1.2 间接法:

这种方法是先利用Jlink下载特制的init文件,下载u-boot到ram中。这样就可以利用u-boot来下载程序。

虽然这种方法实现了用J-link下载程序到Nor-flashNand-flash中,而且速率可以较快,但这种方法步骤比较多,错一步就可能需要重来。从这开始,我就想做一个用间接法来实现下载的下载器,而且能够简化步骤。


J-link下载器的初步实现

刚开始时,我使用的是VC来编写程序的,其运行图如下:


       图片6.png

这个版本的功能的主要步骤如下:

1) 连接J-link并读J-linkSN,即检测J-link是否存在;

2) 检测ARM是否连接;

3) 下载init.bin文件到ARM内部RAM,即Nor启动是为0X40000000Nand启动时为0X00000000,并运行程序初始化内存;

4) 在内存初始化好以后,就下载能在内存中运行的u-boot-init.bin到内存中;

5) 下载要下载到开发板中的u-boot.bin到内存中;

6) 运行u-boot-init,就能在串口终端中执行相应的u-boot命令来下载nor-flashnand-flash了。

从上面的步骤来说,该程序简化了用间接法来下载的第一大步骤。


J-link下载器的实现

从上面的过程中我发现,其实我可以将间接法的两大步骤合在一起,这样能够更简化用户的操作步骤。但VC中对界面编程支持不是太好,于是我试着用C#来进行再次编程,这样能增加用户体验,我采用的是VS2008开发环境。

在使用串口方面,我使用的是SerialPort
微软推出了的 Visual Studio 2008 开发工具,可以不再采 用第三方控件的方法来设计串口通讯程序。NET Framework 2.0 类库包含了 SerialPort ,方便地实现了所需要串口通讯的多种功能, 可以实现MSComm 编程方法快速转换到以 SerialPort 类为核心的串口通讯

利用串口,能够实现将U-BOOT命令传入到开发板,实现开发板的存储的更改。主要实现以下命令:

通过u-boot烧写到Nor Flashu-boot里执行:
protect off all        // 解锁
erase 0 2ffff         // 擦除从0地址开始的大小为0x30000NOR Flash扇区(大小为可擦除块的整数倍,可以运行flash info命令查看)
cp.b 0x30000000 0 30000   // 把前面下载到0x30000000的程序烧写到NOR

通过u-boot烧写到Nand Flashu-boot里执行:
nand erase 0 30000           // 擦除从0地址开始的大小为0x30000Nnad Flash扇区
nand write.jffs2 30000000 0 30000   // 把前面下载到0x30000000的程序烧写到Nand

这样就能实现程序的一键下载。在此能下载U-BOOT的基础上,还将下载内核和文件系统的功能也集成上去。



图片1.png

Jlink_Nadflash-VC.zip

962.38 KB, 下载次数: 8 , 下载积分: 资产 -2 信元, 下载支出 2 信元

Jlink_Nadflash-C#.zip

879.9 KB, 下载次数: 7 , 下载积分: 资产 -2 信元, 下载支出 2 信元

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-9 02:57 , Processed in 0.058289 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表