当前位置:首页 > 单片机 > 单片机
[导读] 题外话:编译环境选择推荐对于刚刚接触ARM裸机编程的各位,我要特别的进行提醒一下,就是关于编译环境的选择问题。目前主流的有ADS+AXD,KEIL FOR ARM,IAR FOR ARM三种,我开始使用的ADS+AXD进行学习,

题外话:编译环境选择推荐

对于刚刚接触ARM裸机编程的各位,我要特别的进行提醒一下,就是关于编译环境的选择问题。目前主流的有ADS+AXD,KEIL FOR ARM,IAR FOR ARM三种,我开始使用的ADS+AXD进行学习,因为光盘里面自带,而且很多资料都是他的,但是个人感觉真心调试十分的不方便,而且各种容易死机,并且现在也已经不更新了,北航一本讲嵌入式的书出了一个第二版,就是把ADS换成了KEIL,而且以后KEIL会是主流,因此我推荐选择KEIL进行学习。IAR听我一个同学说也十分好用,但是在网上找有关方面的资料不是很多。而且我想北航一群教授编书都用KEIL进行,说明KEIL自有他的优势,书上这么说了,那以后会有更多学生用,这样慢慢也会更加流行与主流。闲话就说这些。

正题:Keil for ARM的环境搭建

提醒一下各位就是在keil for ARM进行环境搭建的时候,要注意调试时环境搭建与下载环境的搭建是不同的,因为在下载环境搭建的时候是把程序下载到nor flash里面直接进行运行,而调试环境是把程序下载到RAM里面进行执行。nor flash里面也可以进行调试环境的搭建,但是在nor flash里面只能建立两个端点,而且flash擦写次数有限对寿命有影响。所以不推荐。所以调试的时候推荐在RAM里面进行调试。

配置方法的测试环境:MDK 4.11 JLINK 4.08 开发板是mini2440 其他的环境配置类似,

首先介绍关于程序下载的方法

①建立一个project芯片选择S3C2440(在SAMSUNG里面)并且加入启动代码。

②编辑自己的测试程序。

测试程序如下


  1. #include

  2. voiddelay()

  3. {

  4. inti,j;

  5. for(i=0;i<10000;i++)

  6. {

  7. for(j=0;j<50;j++);

  8. }

  9. }

  10. intmain()

  11. {

  12. GPBCON=0x155555;

  13. while(1)

  14. {

  15. GPBDAT|=0x1E0;

  16. GPBDAT&=0x1C0;

  17. delay();

  18. GPBDAT|=0x1E0;

  19. GPBDAT&=0x1A0;

  20. delay();

  21. GPBDAT|=0x1E0;

  22. delay();

  23. }

  24. }


实现的两个LED循环间歇显示。

③开始进行工程的配置,配置分为以下几步(程序下载的配置)

第一步

也是非常要注意的一点就是:打开S3C3440.S这个文件夹,点击configuration wizard

进入这个界面,把所有选项都勾上。

第二步现在进入Target的配置

现在点击中的魔棒,出现配置环境。

第三部配置Target这个选项栏。配置如下

后面我会进行介绍为什么需要这样去配置它。编译器回根据这个环境生成一个.sct的文件与之对应,作为程序加载,执行的一些信息。

第四步:进入output这个选项中勾选Creat HEX file,如下图所示。

第五步:进入Utilities这个选择中,选择如下

因为在此我使用的是JLINK,再点击setting进行设置,设置情况如下图

对于flash算法的选择可以选择一个相近的,对于我的板子,nor flash是AM29LV160DB,因此我选择了这个类型的nor flash,做完以上配置后,点击OK,不断OK就可以配置成功了。就可以编译,没有任何错误再进行下载。就可以看到LED循环点亮了。

下面是关于程序调试的配置方式。我们调试是在RAM里面进行的。

第一步:同样需要对S3C2440.S进行configuration wizard进行勾选。如果开始已经做了,这步略过。

第二步:进入到配置界面的Target选项栏。进行如下配置。

第三步,进入到output选项栏勾选Creat HEX file,如果已经勾选可以略过。

第四步:进入Debug选项栏,进行如下的配置

Ext_RAM.ini(来自事例程序中)文件代码如下并且要进行修改


  1. FUNCvoidSetupForStart(void){

  2. //ProgramEntryPoint

  3. PC=0x30000000;

  4. }

  5. FUNCvoidInit(void){

  6. _WDWORD(0x4A000008,0xFFFFFFFF);//DisableAllInterrupts

  7. _WDWORD(0x53000000,0x00000000);//DisableWatchdogTimer

  8. //ClockSetup

  9. //FCLK=300MHz,HCLK=100MHz,PCLK=50MHz

  10. _WDWORD(0x4C000000,0x0FFF0FFF);//LOCKTIME

  11. _WDWORD(0x4C000014,0x0000000F);//CLKDIVN

  12. _WDWORD(0x4C000004,0x00043011);//MPLLCON

  13. _WDWORD(0x4C000008,0x00038021);//UPLLCON

  14. _WDWORD(0x4C00000C,0x001FFFF0);//CLKCON

  15. //MemoryControllerSetupforSDRAM

  16. _WDWORD(0x48000000,0x22000000);//BWSCON

  17. _WDWORD(0x4800001C,0x00018005);//BANKCON6

  18. _WDWORD(0x48000020,0x00018005);//BANKCON7

  19. _WDWORD(0x48000024,0x008404F3);//REFRESH

  20. _WDWORD(0x48000028,0x00000032);//BANKSIZE

  21. _WDWORD(0x4800002C,0x00000020);//MRSRB6

  22. _WDWORD(0x48000030,0x00000020);//MRSRB7

  23. _WDWORD(0x56000000,0x000003FF);//GPACON:EnableAddresslinesforSDRAM

  24. }

  25. //Resetchipwithwatchdog,becausenRSTlineisroutedonhardwareinaway

  26. //thatitcannotbepulledlowwithULINK

  27. _WDWORD(0x40000000,0xEAFFFFFE);//LoadRAMaddr0withbranchtoitself

  28. CPSR=0x000000D3;//Disableinterrupts

  29. PC=0x40000000;//PositionPCtostartofRAM

  30. _WDWORD(0x53000000,0x00000021);//EnableWatchdog

  31. g,0//WaitforWatchdogtoresetchip

  32. Init();//Initializememory

  33. LOAD.led.axfINCREMENTAL//Downloadprogram

  34. SetupForStart();//SetupforRunning

  35. g, main // Goto Main

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Arm CPU正在从根本上推动AI变革,并造福地球。Arm架构是未来AI计算的基石。​

关键字: ARM AI

近日,Arm推出了Arm® Ethos™-U85神经网络处理器(NPU)和Arm Corstone™-320物联网参考设计平台,旨在满足海量的数据处理和大规模计算,加速推进边缘AI的发展进程。

关键字: ARM

为了赶超云计算市场上的竞争对手,谷歌正试图通过定制的Arm服务器芯片降低云计算服务成本。

关键字: 谷歌 ARM 定制芯片

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

随着汽车软件数量爆发式的增长,整个行业都需要重新思考汽车产品的开发流程。为此,Arm推出了丰富的硬件IP、新的系统IP,以及全新的汽车计算与计算子系统产品路线图,旨在为各种汽车应用实现性能、功能安全、可扩展等方面的支持。

关键字: ARM 汽车电子

知名移动芯片设计公司ARM最近迈出重要一步,它正式推出汽车芯片设计。ARM推出的芯片设计方案名叫Neoverse,随同芯片一起推出的还有面向汽车制造商、汽车供应商的新系统。

关键字: ARM 汽车芯片 芯片

随着通用人工智能的发展,数据中心的计算需求逐步提高。针对多模态数据、大模型的推理和训练需要更高的算力支持,而随着算力提升与之而来的还需更关注在功耗方面的优化。对于头部云计算和服务厂商而言,针对专门用例提高每瓦性能变得至关...

关键字: ARM 服务器 AI Neoverse CSS

一直以来,riscv架构都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来riscv架构的相关介绍,详细内容请看下文。

关键字: riscv ARM riscv架构

最新消息报道,知情人士透露Arm近日裁掉了中国70多名软件工程师,并会将部分职位转移到中国以外的地区。Arm通过“全球服务”部门已经将支持其中国客户的工作外包给安谋科技,该部门曾经拥有约200名员工。

关键字: ARM 裁员
关闭
关闭