S3C2410启动代码从ADSv1.2移植到KEIL For ARM uV4的方法

2019-11-08来源: 51hei关键字:S3C2410  启动代码  ADSv1  2移植  KEIL  For  ARM  uV4

深圳旋极ARM9实验箱上面的ARM9实验教程是基于ADSv1.2 和 Mult-ICE2.2并口仿真器的,大概是04~09年期间流行的开发方式。目前ARM公司主推RVMDK(KEIL For ARM uVsion4)和ULINK(中国ARM玩家主要是JLINK V8)仿真器了,怎么把原来的ADS程序移植到KEIL上面呢?


经过分析ADS工程下面的文件,可以看到,原来的工程文件主程序是main.C,其他必须的汇编文件、C头文件、C源文件都放在common和include目录下。首先我们需要把这些工程都需要的基本文件都copy出来,放到一个“基本文件”目录下。

里面的“DebugInRAM.ini“文件,是通过JTAG将镜像文件下载到SDRAM内存中运行时,所需要加载的SDRAM配置文件,相当于ADSV1.2工程中每次都需要通过命令行键入” obey wtk2410.ads “文件中的内容。 

DebugInRAM.ini文件的内容如下:可以看到,去掉了ads文件里面的禁止vector_catch和semihosting两个命令,其余都一样。

二、建立RVMDK工程文件,不要系统自建的启动代码,加入基本文件和main主程序文件。

修改init.s文件,这个是移植的关键。需要注意的地方有:
1. 宏”MOV_PC_LR“在KEIL里面修改成相应的BX 指令。


2.把init.s文件原来定义的段名”Init“ 修改成”RESET“,这应该相当于ADSV1.2里面告诉编译器镜像文件开始的段是谁。

3. 在AREA段定义伪指令前,加入” PRESERVE8 “伪指令,告诉KEIL编译器字节对齐。

4. 将ADSv1.2里面的RO、RW、ZI基地址和大小定义的系统变量,修改为KEIL中的格式,所有出现的代码都要修改。


5. 设置projectTarget 1工程属性。

misc contrls里面加入”--entry 0x30100000“编译选项 

6. 在”Debug“页面里面加入 "DebugInRAM.ini"文件,并在”Load Application at Startup“选项打勾。

重新编译工程,生成镜像文件,并下载到SDRAM中开始调试。

关键字:S3C2410  启动代码  ADSv1  2移植  KEIL  For  ARM  uV4 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479389.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ARM9学习2-ARM镜像文件和Scatter文件
下一篇:2440裸机编程之四 外部中断

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8S003的GPIO模拟I2C切换输入输出的解决办法
刚开始学STM8,很多东西刚了解,正在做一个温湿度显示小板,就是使用I2C驱动SHT20传感器,并显示到数码管,数码管用的四位一体共阴数码管,STM8管脚有限,添加了一片TM1650做驱动,不过SHT20和TM1650都是用的I2C接口,由于对STM8硬件I2C还不了解,先打算用软件模拟,这就涉及到需要对GPIO做输入输出切换处理来检测ACK响应,刚开始,直接操作DDR寄存器,但是出现从输出切换到输入就会出现单片机死机,不解,查资料,得到一个解决办法,在输出状态时,可以不用切换到输入,我使用管脚D4,D5这两个管脚,这两个管脚比较特殊,就是真正开漏,在管脚描述为T,其它描述为HS(高吸收电流)。解决办法,将IO设置为开漏输出,外部
发表于 2019-11-11
S3C2440裸奔之环境搭建
首先需要搭建一个可以编译代码的环境。从一开始我就不想用ADS(安装完ADS后会产生一个CodeWarrior for ARM Developer Suite的工具,可以编译和调试代码),虽然它是个很好的工具,但是它却隐藏了很多的细节,不利于新手去深度学习。所以我还是希望从Makefile入手,一步一步弄懂所有的细节。第一步:需要先搭建一个Linux环境,我是安装在虚拟机上面的。安装好Linux后,再从网上下载arm-linux-gcc,一般解压后之后就可以直接使用了,但需要先设置好环境参数。二步:编写代码,然后在Linux系统上进行编译。代码在后面会给出。第三步:需要把编译好的bin文件烧写到板子上。这个需要使用J-Link烧录器,
发表于 2019-11-11
S3C2440裸奔之环境搭建
S3C2440裸奔之SDRAM
EQU (DW16) ; PCMCIA(PD6710), 16-bitB3_BWSCON EQU (DW16) ; Ethernet(CS8900), 16-bitB4_BWSCON EQU (DW32) ; Intel Strata(28F128), 32-bit, for nCS4B5_BWSCON EQU (DW16) ; A400/A410 Ext, 16-bitB6_BWSCON EQU (DW32) ; SDRAM(K4S561632C) 32MBx2, 32-bitB7_BWSCON EQU (DW32) ; N.C.;BANK0CONB0_Tacs  EQU 0x3 ;0clkB0_Tcos  
发表于 2019-11-11
stm8s105调试I2C记录
最近由于AR项目中调试LCOS需要用到STM8S105的mcu,本次主要是使用模拟I2C。1.IIC协议简介 IIC协议这里只做简要介绍,详细介绍可以百度了解,协议相对简单,主要有开始位,停止位,应答位,非应答位。开始位:当时钟为高,数据线由高变低停止位:当时钟位高,数据线由低变高。应答位:第9个时钟到来时,数据线为低。(这里第9个时钟,发送完一个字节,紧接着就是第9个时钟到来)非应答位,第9个时钟到来时,数据线为高。2.LCOS协议:1.发送数据:单数据发送: 开始位:写地址位(8bit):寄存器地址(16bit):数据(8bit):停止位多字节发送:开始位:写地址(8bit):寄存器地址(16bit):数据(8bit
发表于 2019-11-09
stm8s105调试I2C记录
STM8S103K3 I2C
以下为.h文件:定义了PA1为SDA,PA2为SCL #ifndef __I2C_H#define __I2C_H#include "stm8s.h"#include "stm8s_gpio.h"#include "tim1.h"#include "uart.h"#include <iostm8s103f3.h>#include <intrinsics.h> #define SCL              
发表于 2019-11-08
几乎是每个arm程序必备的启动代码
启动代码是几乎是每个arm程序程序必备的,刚开始看的时候看别人的启动代码时感觉云里雾里,所以懒惰的想法浮现脑中:别人都写好了我还写什么,直接拿来用不就行了,对在我懂得情况下,我一定会拿来就用,但是现在我还不懂,一切就要从头开始,经过几天的努力,现在的感觉是启动代码不过如此 :) ,呵呵。 ;--------------------------------------------------------------------- ;startup.s ;系统启动代码 ;起始时间 : 2009.5.7 ----->2009.5.11 
发表于 2019-11-11
几乎是每个arm程序必备的启动代码
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved