以后分析都将基于tiny6410进行:
一、安装rvds2.2问题汇总
安装:rvds/setup.exe
1.出现Error: %variable HOSTPLAT is not defined in File RDI\armsd\1.3.1\66\install.xml
原因:电脑的CPU是AMD的问题。
解决方法:把安装目录中的rvds/RDI/ARMSD/1.3.1/66下的INSTALL.XML与rvds/utilities/installer/1.6/43下的install.xml中的%(HOSTPLAT)%替换为%(FS)win_32-pentium%就可以了。
2.多次提示license问题
解决方法:
用rvds/Crack/keygen.exe产生license.dat;在C盘的根目录下创建一个名为flexlm的文件夹,将刚才生成的license.dat拷贝进去。运行rvds/Crack/Patch.exe给下边列出的文件注入校验和,文件目录见下边:
C:\Program Files\ARM\IDEs\CodeWarrior\CodeWarrior\5.6.1\1592\win_32-pentium\bin\Plugins\License\oemlicense.dll C:\Program Files\ARM\IDEs\CodeWarrior\RVPlugins\1.0\86\win_32-pentium\oemlicense\oemlicense.dll C:\Program Files\ARM\RDI\armsd\1.3.1\66\win_32-pentium\armsd.exe C:\Program Files\ARM\RDI\AXD\1.3.1\98\win_32-pentium\axd.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\armasm.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\armcc.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\armcpp.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\armlink.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\fromelf.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\tcc.exe C:\Program Files\ARM\RVCT\Programs\2.2\349\win_32-pentium\tcpp.exe C:\Program Files\ARM\RVD\Core\1.8\734\win_32-pentium\bin\tvs.exe C:\Program Files\ARM\RVD\Core\1.8\734\win_32-pentium\bin\xry100.dll C:\Program Files\ARM\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\armiss.sdi C:\Program Files\ARM\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\armulate.sdi C:\Program Files\ARM\RVARMulator\ARMulator\1.4.1\206\win_32-pentium\v6armiss.sdi C:\Program Files\ARM\RVARMulator\v6ARMulator\1.4.1\238\win_32-pentium\v6thumb2.sdi C:\Program Files\ARM\RVARMulator\v6ARMulator\1.4.1\238\win_32-pentium\v6trustzone.sdi
二、J-Flash ARM不能使用
原因:tiny6410没有nor flash,并且它的启动选择开关不像micro2440那样就是为了设置OM[4:0]、它是为了设置IROM启动方式中GPN[15:13]《micro2440开发》第十一章:S3C6410地址空间是从nand flash(实际是从RAM)或是SD卡启动;换言之,tiny6410中0x0000 0000总是映射在I_ROM区域(即OM[4:1]为1111),所以、使用J-Flash ARM(micro2440可以用启动选择开关设置OM[4:0]映射到nor flash)不管启动选择开关在哪里、S3C6410在0x0000 0000处都是I_ROM、不是flash,就会报错“找不到flash”。
进一步分析:网上有人可以用J-Flash ARM烧录Nand Flash,原理是先入内存、完了在入Nand Flash;但该方法应用场合较少,有兴趣可以研究。所以,对于tiny6410来说、J-Flash ARM工具可能就没有用处了。
我们一般做法是:把uboot.bin放在SD卡中、完了从SD卡启动。
三、结论:我们只能用ADS下载内存运行的方法了,因为没有nor flash、J-Flash ARM烧录flash工具没有作用!
内核:ARM1176JZF-S
四、其他注意事项
单步IDE工具:CodeWarrior默认不使用AXD调试;因此做如下设置Edit->Debug Settings选项卡中,Debugger下ReadView Debugger和ReadView Runner都要选择AXD。
如果有《micro2440开发》第六章:micro2440 ADS单步调试总结提到的存储器未初始化错误发生,可以直接放uboot至SD卡、从SD卡启动;这时,uboot就已经初始化存储器了(注意不要让Linux Kernel启动!)。如果要像micro2440那样设置也可以,如下:
setmem 0x7e001004, 0x4, 32 //设置DRAM控制器状态为Configure setmem 0x7e001010, 0x40d, 32 //设置DRAM的刷新周期 setmem 0x7e001014, 0x6, 32 //设置CAS延时 setmem 0x7e001018, 0x3, 32 //设置t_DQSS setmem 0x7e00101c, 0xf, 32 //设置t_MRD setmem 0x7e001020, 0xf, 32 //设置t_RAS setmem 0x7e001024, 0xf, 32 //设置t_RC setmem 0x7e001028, 0x1f, 32 //设置t_RCD setmem 0x7e00102c, 0x21f, 32 //设置t_RFC setmem 0x7e001030, 0xf, 32 //设置t_RP setmem 0x7e001034, 0xf, 32 //设置t_RRD setmem 0x7e001038, 0x7, 32 //设置t_WR setmem 0x7e00103c, 0x7, 32 //设置t_WTR setmem 0x7e001040, 0xf, 32 //设置t_XP setmem 0x7e001044, 0x1f, 32 //设置t_XSR setmem 0x7e001048, 0x1f, 32 //设置t_ESR setmem 0x7e00100c, 0x10012, 32 //设置DRAM的Column, Row等属性 setmem 0x7e00104c, 0x0b45, 32 //设置DRAM的buswidth,type等属性 setmem 0x7e001200, 0x150f8, 32 //设置RBC以及片选属性 setmem 0x7e001304, 0x0, 32 //设置DQS延时 setmem 0x7e001008, 0xc0000, 32 //发送NOP命令到DRAM setmem 0x7e001008, 0x0, 32 //发送Precharge命令到DRAM setmem 0x7e001008, 0x40000, 32 //发送Autorefresh命令到DRAM setmem 0x7e001008, 0x40000, 32 //发送Autorefresh命令到DRAM setmem 0x7e001008, 0xa0000, 32 //设置DRAM的EMRS寄存器 setmem 0x7e001008, 0x80032, 32 //设置DRAM的MRS寄存器 setmem 0x7e001004, 0x0, 32 //设置DRAM控制器开始运行