s3c2440裸机开发环境的搭建

s3c2440裸机开发环境的搭建s3c2440裸机开发环境的搭建用于arm裸机程序开发的IDE基本有MDK,IAR,还有ADS,也可以选择在linux下安装交叉编译链来进行开发。笔者选择的是MDK作为我进行开发的IDE。下面介绍笔者搭建开发环境的过程。笔者主要参考了两篇博文来进行开发环境的搭建的,分别是:http://blog.csdn.net/mybelief321/article/details/8910528

大家好,又见面了,我是你们的朋友全栈君。

s3c2440裸机开发环境的搭建

用于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,建立一个新的工程,如下图所示:

    s3c2440裸机开发环境的搭建    

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

s3c2440裸机开发环境的搭建

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

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

s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

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

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

s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

 s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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文件的路

s3c2440裸机开发环境的搭建

我的修改后如下所示:

s3c2440裸机开发环境的搭建

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

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

  s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

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

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

s3c2440裸机开发环境的搭建

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

s3c2440裸机开发环境的搭建

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

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

s3c2440裸机开发环境的搭建

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143837.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vscode插件配置_vscode bootstrap插件

    vscode插件配置_vscode bootstrap插件vscode插件列表及配置信息

    2022年4月21日
    276
  • C#FindWindowEx参数详解「建议收藏」

    C#FindWindowEx参数详解「建议收藏」FindWindowEx参数详解本函数的其他内容在网络上都比较多,这里主要说一下它的参数设置和搜索结果的区别。函数功能:在窗口列表中寻找与指定条件相符的第一个子窗口。该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写。函数原型:HWNDFindWindowEx(HWNDh

    2022年6月1日
    31
  • python读取图像数据的一些方法[通俗易懂]

    python读取图像数据的一些方法[通俗易懂]工作和学习中设计一个神经网络中经常需要设计一个数据载入器。首先第一件事我们要根据我们的任务要求确定一个数据提供的方法。如我们是一个分类任务,我们就需要读取数据和数据本身对应的标签。12除了分类任务之外当然还有一些图像到图像的任务,如…

    2022年9月12日
    3
  • MATLABfill函数_matlab中C的模块名称是什么

    MATLABfill函数_matlab中C的模块名称是什么matlab移植C/C++代码时,发现不管是opencv还是IPP库都没有填充联通区域函数imfill(),于是只能自己动手了。先展示一下imfill()函数的功能,如下图:上图中,左图是一个二值图像,白色是手臂边缘像素值为1,黑色区域像素值为0,现在想将手臂填充1,用imfill()函数可以实现该功能,但C/C++代码需要自己实现。C/C++代码:boolimFill(Ipp8u*img,intwidth,intheight){ vector<int>q; int

    2022年9月12日
    3
  • python输入两个集合取并集_python交集并集差集

    python输入两个集合取并集_python交集并集差集第一种方法:使用python基本数据结构set集合。优点:集合运算长度可以不一致,运算效率高缺点:两个进行运算的集合中不能够含有重复的元素,如果含有的话,转成set集合后,会自动去掉重复元素a=[1,2,3]b=[1,2,6,9,12]print(set(a)&set(b))#交集print(set(a)|set(b))#并集print(set(a)^set(b))#异或,就是两个集合去掉交集的那部分print(set(a)-set(b))#差集,就

    2022年10月6日
    1
  • webstorm2021激活码(JetBrains全家桶)

    (webstorm2021激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月21日
    152

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号