历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2019年01月16日 | s3c2440裸机开发环境的搭建

2019-01-16 来源:eefocus

用于arm裸机程序开发的IDE基本有MDK,IAR,还有ADS,也可以选择在linux下安装交叉编译链来进行开发。笔者选择的是MDK作为我进行开发的IDE。下面介绍笔者搭建开发环境的过程。


笔者主要参考了两篇博文来进行开发环境的搭建的,分别是:


http://blog.csdn.net/mybelief321/article/details/8910528


http://blog.csdn.net/shengnan_wu/article/details/8116815


笔者搭建后的相关环境如下:


开发板:mini2440


操作系统:Windows 8.1 64位


开发环境:MDK 4.6版本


仿真器:JLink v450j


相关文件由于太大,笔者无法上传到CSDN,故有需要的朋友可在留言里向笔者索要,笔者将其上传到别的网盘,然后分享给大家。


MDK,JLink的安装就不多说了,直接跟着提示走就行了。


下面是关于MDK工程的建立,以及通过JLink将我们的程序烧写进开发板中和通过MDK对我们的程序进行调试。


(一) MDK工程的建立


1).打开KeiluVision4,建立一个新的工程,如下图所示:


    


2).新建一个目录来存放我们的工程


                   在这里,我新建的目录是test,新建的工程是test.uvproj


         3).接下来选择CPU,笔者选择的是samsung的S3C2440A,点击OK,如下:


        

 接着,会出现选择是否将“S3C2440.s”拷贝进我们的工程的对话框,如下图,因为该文件包含一些启动代码,所以我们选择是。


        

 4).可以根据需要对S3C2440.s进行设置。设置方法是:打开该文件,选择编辑界面下面的Configurationwizard进行配置,如下所示:



5).之后新建一个c文件并编写代码,并将其添加到工程里,具体的过程笔者就不多介绍了。


6).单击Target1的Optionsfor Target ' Target 1'进行相应的配置,具体如下:


a )      Target选项修改为如下图所示:



b)      OutPut选项修改为如下图所示:



c)      在User选项里相应位置添加命令(用于生成.bin文件和.axf调试文件,添加的命令为:fromelf --bin -o @p.bin @p.axf)如下:



d)      在Utilities选项中进行修改,如下:



再单击Settings,进行如下设置:



e)      大概的设置就是这些,保存后就行。这样子就可以正常编译,并生成可以通过JLink烧写进我们的开发板的bin文件了。具体烧写的过程在下面介绍。


(二) 通过JLink烧写程序


笔者选择通过JLink烧写程序进去开发板,具体的操作过程如下:


1)      打开JFlash,可以选择新建工程,也可以选择打开别人已经配置好的工程,功臣里面储存的是对开发的相关配置信息。笔者选择的是别人已经配置好的工程(下载地址为:http://download.csdn.net/detail/lookerson/7964281)。


单击File,选择OpenProject,选择s3c2440.jflash。


2)      给开发板上电,通过JLink连接计算机,单击Target选项,选择Connect选项,一般情况下,开发板就正常连接了。


3)      单击File,选择Open data file,打开我们在之前生成的bin文件,按照提示即可。


4)      下面进行烧录,可以直接按F7,也可以选择Target选项的Auto选项,如果没有意外,烧录就完成了。


5)      接下来就是断开开发板的连接,单击Target选项的Disconnect即可,然后按下开发板的复位键,应该就可以看到成果了。


(三) 通过MDK进行调试


通常,我们需要对我们的程序进行调试,MDK给我们提供了一种很好的调试方法,具体的设置过程如下:


1)      由于MDK4.6中缺少了待会需要用到的文件,但是在MDK4.0里有,所有我先安装了MDk4.0,然后在MDK4.0安装目录的C:\Keil\ARM\Boards\Samsung把S3C2440目录拷贝到MDK4.6的安装目录的D:\Keil\ARM\Boards\Samsung目录下,然后可以把MDK4.0卸载掉。只好把S3C2440目录下的RTX_Blinky下的Ext_RAM.ini拷贝到工程目录下,也可以直接用笔者提供的文件(http://download.csdn.net/detail/lookerson/7965419).


2)      修改Ext_RAM.ini,把如下图的灰色内容修改成你对应生成的axf文件的路



我的修改后如下所示:



3)      选择Target 1的Options for Target ' Target 1'进行相应的配置


a)      Target选项修改为如下图所示:


  


b)       在Linker选项里勾上Use Memory Layoutfrom target Dialog



c)    在debug选项的配置主要有以下几项:


勾上右边的Use,Use里选择J-Link/J-Tracearm(选择Jlink调试)


在InitializationFile选择之前修改的Ext_ARM.ini文件的路径



点击Settings按钮,设置JTAGSpeed为Auto Selection,如下图:


                            

保存相关的设置后,修改就应该已经完成了。


rebuild一下,连接好JLink和开发板,上电,点击Debug就可以开始调试了,如下所示:



至此,s3c2440的开发环境就基本上搭建完成了。如果有什么疏漏之处,欢迎大家指出,需要相关资源的朋友,也可以通过留言告诉笔者。


推荐阅读

史海拾趣

问答坊 | AI 解惑

智能化电子门控模块提高系统可靠性

随着现代汽车技术的发展,驾乘人员对汽车安全、舒适的要求越来越高,新的控制功能随汽车级别提升不断增加,如中央门锁、灯光控制、玻璃升降、后视镜调节、天窗控制、座椅调节、点火延时控制等。传统的继电器控制手段和独立控制模式意味着复杂的线束 ...…

查看全部问答>

协议让我头痛

我是一个新手 刚开始学单片机 我想让上位机跟下位机协议通信 上位机我用的C#,这个知道怎么写 但下位机不知道怎么判断数据帧了 协议基本格式是这样的 上位机发送 EB 90 EB 90 04 90 EB            ...…

查看全部问答>

如何在PC上读取SD CARD的CARD ID. 谢谢。

我现在需要在PC上读取SD CARD的CARID (1)SD CARD通过USB口插上 或者 ActiveSyn连着设备(SD CARD在设备上) 我知道如何在win ce里面使用一下函数获取到 DeviceIoControl(hVolume, IOCTL_DISK_GET_STORAGEID,         & ...…

查看全部问答>

关于evc中的对话框控件

在evc中想在group box中加些单选按钮,为何编译运行后,只能看到groupbox而看不到这些单选按钮,这好像和vc不一样啊!…

查看全部问答>

刚入公司,要我学做驱动,求助,给分

刚毕业的新手,公司是做低端手机开发的,现在要我做驱动程序,不知如何下手,希望大家多多指点,介绍一些适宜的资料给我~~~~~~~~~~~~定散分!! …

查看全部问答>

STR9指令速度

"Sequential burst operation up to 96M"经测试,顺序执行时确实能达到96M的速度。但是跳转指令的执行速度很慢。一个跳转指令大约需要5个指令周期。谁有办法让跳转指令的执行效率更高点呀?…

查看全部问答>

关于speex的问题

                                 我从st官网上下载了speex例子,在软件仿真record那段程序时,会进入硬件错误中断状态,这是怎么回事??有谁用过sp ...…

查看全部问答>

Stellaris 新工具,Stellaris® PinMux Utility

Stellaris MCU 官方支持的资源好久没有新的东西出现了。StellarisWare 目前是停留在 8555 版本。自从上次添加了对汉字的支持后就没有继续更新。      6月21号,TI 更新了一个小软件---Stellaris® PinMux Utility.   ...…

查看全部问答>

m3控制tlc5615产生正弦波的频率提不上去

我时钟配置是6mhz,然后我定时器初值给的6,那么就是定时1us,我正弦表是256个点,共255个间隔,也就是周期是255us,那么频率应该是3921hz,但是产生的正弦波频率只有134hz左右,是为什么呢…

查看全部问答>

初次见面

很高兴和大家一起分享学习嵌入式的快乐  …

查看全部问答>