TQ2440的例程都是ADS环境下的,ADS已经是古董级的软件,win7都不带支持何况WIN10。考虑需求就尝试将工程移植到keil5上。查找了大量资料,试验加修改总算是移植成功了。文后附上所参考的地址。这里总结一下,方便查看:
keil环境配置
打开keil,下载相关的内核,sumsung2440的。
新建工程,选择相关内核(会提示添加源文件,如果自己有就不要添加了,直接导入),将文件导入到工程,此处和导入STM32的h文件,c文件一样
注意拷贝文件时inc文件一定要和源文件在一个文件夹(不是指工程中,是你实际存放文件的文件夹里)就是和2440init.s文件放一块
设置Target选项卡

这里SIZE可以自行设置1000000也行 那后面RAM开头要31000000
方便拷贝:0x30000000 0x800000 0x30800000
设置c/c++选项卡


设置头文件路径,Enable那个不要勾选
inc的必选
路径安装一下keil自带的头文件,不然会有编译错误,根据自己安装地址查找。我的在D盘
设置ASM选项卡

Enable也不要选
设置linker选项卡

方便拷贝:–sort=CallTree
修改2440init.s文件
首先,MDK默认放在最前面的段是RESET段,将2440init.s第83行(可能你的不是) AREA Init,CODE,READONLY修改为 AREA RESET,CODE,READONLY
这样编译器就能找到入口点了
在上面这句下面加上一行
PRESERVE8 ;
修改
IMPORT |Image$$RO$$Base| ; Base of ROM code
IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data)
IMPORT |Image$$RW$$Base| ; Base of RAM to initialise
IMPORT |Image$$ZI$$Base| ; Base and limit of area
IMPORT |Image$$ZI$$Limit| ; to zero initialise
修改为
IMPORT |Image$$ER_ROM1$$RO$$Base| ; Base of ROM code
IMPORT |Image$$ER_ROM1$$RO$$Limit| ; End of ROM code (=start of ROM data)
IMPORT |Image$$RW_RAM1$$RW$$Base| ; Base of RAM to initialise
IMPORT |Image$$RW_RAM1$$ZI$$Base| ; Base and limit of area
IMPORT |Image$$RW_RAM1$$ZI$$Limit| ; to zero initialize
修改
BaseOfROM DCD |Image$$RO$$Base|
TopOfROM DCD |Image$$RO$$Limit|
BaseOfBSS DCD |Image$$RW$$Base|
BaseOfZero DCD |Image$$ZI$$Base|
EndOfBSS DCD |Image$$ZI$$Limit|
修改为
BaseOfROM DCD |Image$$ER_ROM1$$RO$$Base|
TopOfROM DCD |Image$$ER_ROM1$$RO$$Limit|
BaseOfBSS DCD |Image$$RW_RAM1$$RW$$Base|
BaseOfZero DCD |Image$$RW_RAM1$$ZI$$Base|
EndOfBSS DCD |Image$$RW_RAM1$$ZI$$Limit|
这些是通过ADS的工程设置里面设定的RO Base和RW Base设定的,在MDK中的名称不叫这个
如果不修改,会报错,
实在不想修改,可以修改 scatter 文件里面的 ER_ROM1为 RO 标号,RW_RAM1 为 RW,RW_IRAM1为ZI 以此类推即可
建议还是修改2440init.s文件方便
还有个地方:LCD_TFT.h第14行根据自己的开发板屏幕修改
#define LCD_Type LCDW35 //设定屏的类型
后面这里加粗的是修改适应自己的屏幕
设置生成bin文件

user选项卡如图设置,此设置直接和HEX生成在一个文件夹,修改路径可以查其他方法。
方便拷贝:fromelf.exe --bin -o “$L@L.bin” “#L”
完成后编译即可。
关于编译错误:
OutPutFilesLCD1.axf: Error: L6218E:Undefined symbol
Image$$RO$$Base (referred from2440_init.o).
查找下在哪个文件,打开,把相关设置更改为之前要求修改2440init.s文件内容里的形式。
感谢以下分享方法的博主:
参考链接:https://www.cnblogs.com/dengxiaojun/p/4279425.html
错误解决参考:https://blog.csdn.net/manchestermi/article/details/48413361
附一个关于bin文件生成以及地址的链接:https://blog.csdn.net/u014563989/article/details/51127519
上一篇:UCOS_II的移植到S3C2440 ADS 1.2
下一篇:smdk2440移植u-boot笔记
推荐阅读
史海拾趣



XC6406PP60DL






京公网安备 11010802033920号