windows arm裸机开发环境搭建 --MDK4.11

2025-05-22 03:47:14

1、运行MDK图,如下图,新建一个项目工程

windows arm裸机开发环境搭建 --MDK4.11

3、选择CPU为Samsung/S3C2440A,单击OK

windows arm裸机开发环境搭建 --MDK4.11

5、容易看出多出来一个test工程文档。在上一步单击完OK后,会弹出下图,该图是为了让你选择是不是将Samsung S3C2440的启动代码复制添加的你的工程文档。这段启动代码咱们以后分析,在这里先选择“是”

windows arm裸机开发环境搭建 --MDK4.11

7、你看上图,可以看到工程文档自动添加了S3C2440.s,这就是上一步选择“是”后自动添加的启动代码,咱们再看看test文件夹里多了什么文件。很容易可以看出多了三个文件,其中一邗锒凳审个就是S3C2440.s,这个代码很重要啊。咱们现在先不管他,接着下一步。

windows arm裸机开发环境搭建 --MDK4.11

9、将该文件保存并命名为test1,注意后面要加后缀.c,单击保存

windows arm裸机开发环境搭建 --MDK4.11

11、选择刚才建立的test1.c,单击Add,该文件就被加到了工程中。

windows arm裸机开发环境搭建 --MDK4.11

13、编辑test1.c文件。这里我们再添加别的文件,也不再使用include包含什么东西。 test1.c的代码如下,可以直接复制粘贴。/忮氽阝另* */里边的内容应该可以显示,这也是我从新浪搬家到这里的原因了,发现新浪的注释代码有时候不能显示。/** 功能:实现LED1灯循环亮灭* LED1--GPB5* LED2--GPB6* LED3--GPB7* LED4--GPB8*/#define rGPBCON(*(volatile unsigned long*)0x56000010)#define rGPBDAT(*(volatile unsigned long*)0x56000014)#define Led1_On ~(1<<5)#define Led1_Off (1<<5)void Led_Port_Init(void);void delay(int i);int main(void){Led_Port_Init();while(1){//Led1亮rGPBDAT&=Led1_On;delay(10000);//Led1灭rGPBDAT|=Led1_Off;delay(10000);}}/** 函数名称:Led_Port_Init()* 全局变量:无* 参 数:无* 返 回 值:无* 说 明:实现Led1灯的寄存器初始化*/void Led_Port_Init(void){ //设置GPB5为输出端口 rGPBCON &= ~(3<<10); rGPBCON |= (1<<10);}/** 函数名称:delay(int t)* 全局变量:无* 参 数:t* 返 回 值:无* 说 明:延时函数*/void delay(int t){ int a,b; for(a=0;a<=i;a++)for(b=0;b<=100;b++);} 将上面的代码复制粘贴完之后,注意保存。这时候还不能编译,如果编译,会出现如下图的错误。

windows arm裸机开发环境搭建 --MDK4.11

15、将这个Ext_RAM文件复制到咱们创建的test工程存放的文件夹中,我的是下图

windows arm裸机开发环境搭建 --MDK4.11

17、 这里的.\表示当前文件夹,test是你的工程文件名,比如说你新建的工程为wangwensong,那么这里就要改为.\wangwensong.axf了。 做完准备工作,下面开始进行配置。在Target 1处鼠标右击,选择Options for Target 'Target 1'....

windows arm裸机开发环境搭建 --MDK4.11

19、配置Debug,如下图。因为我使用的是Jlink仿真,所以选择J-LINK/J-TRACE,那个.\Ext_RAM.ini文件就是刚才我们复制修改后的文件,添加进来就行了

windows arm裸机开发环境搭建 --MDK4.11

21、至此配置完成,点击OK,就行了。5、编译 点击保存按钮,先保存一下,再点击,编译文件。

windows arm裸机开发环境搭建 --MDK4.11

23、 咱们先把他解决了吧,只需要修改一项,那就是咱们在配置Utilities的时候将那个Update Target before Debugging前面的勾去掉,如下图

windows arm裸机开发环境搭建 --MDK4.11

25、输出的信息是: No Algorithm found for:30000000H - 30000357H Erase skipped! 那么这是什么意思呢?联系出错提示框中的错误信息“Flash Downloaded flashed”,可以看出这里是MDK要找以0x30000000开头的地址空间的Flash下载算法(algorithm),但是0x30000000开头的空间不是Flash地址空间,而是内存空间(SDRAM的起始地址是0x30000000),记得咱们在配置Target时,设置的地址其实就是基于内存加载的。这样解决方法就有了。既然咱们选择的是基于内存的加载方式,就应该在配置Ultilities时,取消“Update Target before Debugging”,这个选项只能在Flash加载方式中使用。 在这里说明一下,RAM(SDRAM也是其中一种)表示的是读写存储器,可其中的任一存储单元进行读或写操作,计算机关闭电源后其内的信息将不在保存,再次开机需要重新装入,通常用来存放操作系统,各种正在运行的软件、输入和输出数据、中间结果及与外存交换信息等,我们常说的内存主要是指RAM。所以咱们的开发板如果断电再重启,程序就没有了,解决这个的办法是将程序从sdram中复制到nand flash中去,以后就会用到。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢