历史上的今天
今天是:2025年07月01日(星期二)
2020年07月01日 | 将TQ2440的ADS工程文件移植到KEIL5中
2020-07-01 来源:eefocus
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 ;
(为了让汇编代码8字节对齐)
修改
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
史海拾趣
|
STM8普及,无需ST-Link,新买的器件可以无限次数串口下载程序 STM8的单片机,只要内部是空的,就算Bootloader disable,也会上电运行Bootloader,可以从串口下载程序。新的器件虽然Bootloader disable,但是也可以用串口下载至少一次程序。 如果是一般的程序下载后,Bootloader是disable,那么不借助ST- ...… 查看全部问答> |
|
在资料上看到LM124的供电电压范围是3~30V,可是我在调试板子的时候发现当变动LM124的供电电压时,输出端电压会随着改变,请问LM124的供电电压到底应该是多少?… 查看全部问答> |
|
请问如何用PLL#_CLKOUTp和 PLL#_CLKOUTn输出差分时钟,我先前都是用一般IO通过PLL中调整相位至180输出的,不知道用这两个脚如何实现。期待>>>>>>>>>>>>>>… 查看全部问答> |
|
LM3S8962模拟SPI驱动VS1003学习心得 倒腾了很久,参考了高手给我的一个程序,终于用VS1003听到声音了。这里也和大家分享一下我的学习心得~~人人助我,我助人人~~ 这段时间仔细的研究了一下I ...… 查看全部问答> |




