iar 连接linux开发板,LED裸机程序(IAR)

LED裸机程序(IAR)

一、实验环境

开发环境:IAR5.30

开发板:UT-S3C6410

开发工具:JLINK V8

二、实验目的

在无操作系统的开发板上,运行程序,掌握裸机程序的开发过程,熟悉IAR和JLINK的使用。

三、实验步骤

1、准备工作

找一份S3C6410X芯片手册和开发板原理图,还要找根跳线把调试端口JTAG傍边的第二个和第三个引脚连起来。

没有操作系统的ARM和51单片机没有多大的差别,所以一开始大家就不要有畏惧感。

先准备点理论知识,外围设备会映射到内存地址空间,地址是固定不变的,因不同的芯片而不同,可以从S3C6410X.PDF的资料上找映射的详细信息。找到外围设备对应的内存地址后,就可以对外围设备进行操作了,如果用C语言,用指针就可以对其进行读写操作,之后的事一切都变得很简单。

2、创建工程,修改参数

打开IAR,新建一个工程。然后打开配置选项project> option:

我的开发板的内核是ARM1176JF-S(在S3C6410X的芯片资料上能找到),所以选上。

然后:

配置好,点击OK。

3、添加启动代码

添加一个启动代码文件(cstartup.s)到工程中,这个代码的作用是初始化中断和7种异常情况并建立异常向量表,完成后会跳到main函数的入口地址执行。

启动代码文件放在C:\Program Files\IAR Systems\Embedded

Workbench 5.4 Kickstart\arm\src\lib\arm目录下,先把它复制到自己的工程目录下。

步骤1:

步骤2:

点击打开,添加完成。

4、添加.ICF文件

.ICF文件的作用是告诉linker怎么把数据和代码分布到物理内存中,和MDK中的scatter

file是相同作用。

本实验用的.ICF文件放在C:\Program Files\IAR Systems\Embedded

Workbench 5.4 Kickstart\arm\config目录下,复制到工程目录下,并改名为6410.icf

从图中可以得知rom是从0X0C00000地址开始的,这个区间(0x0c000000~0x0fffffff)正是我们经常烧写bootloader的地址,我们正真能操作的空间大小只有4K,所以生成的可执行文件不能大于4K,详细信息芯片资料上有介绍。所以对.icf文件进行如下修改:

define symbol __ICFEDIT_intvec_start__ = 0x0c000000;

/*-Memory Regions-*/

define symbol __ICFEDIT_region_ROM_start__= 0x0c000000;

define symbol __ICFEDIT_region_ROM_end__= 0x0c000FFF;

define symbol __ICFEDIT_region_RAM_start__= 0x0c000000;

define symbol __ICFEDIT_region_RAM_end__= 0x0c000FFF;

然后设置一下:

4、查找LED1的映射地址

打开开发板核心板的原理图:

不难找到LED1对应的引脚是GPM0,然后找打开S3C6410的芯片资料,找到GPM映射的详细信息。

可以看到GPMCON GPMDAT两个寄存器映射到的内存地址空间,GPMPUD就别不要管了。

这是LED1映射到的具体的地址,可以同过对GPMCON设置把GPM0设置为OUTPUT模式。

这是LED的数据地址,没个LED占了一个bit,对这个地址上相应的位写数据就能控制LED的亮和灭(1/0)。

5、编写代码

#include

int main(void)

{

int i;

int *pcon = NULL;

int *pdat = NULL;

pcon = (int *)0x7f008820;

*pcon = 0x1; //bit0 : 0001 means GPM0 output

pdat = (int *)0x7f008824;

while(1)

{

*pdat = 0x0; //0 - LED OFF

//delay

for(i = 0;i<500000;i++);

*pdat = 0x01; //1 -- LED ON

for(i = 0;i<500000;i++);

}

}

编好后添加到工程中。

上面的程序风格显然是不可取,只是为了直观,具体请参考附件:zip.gif LED.zip

接好JLINK,点击DEBUG AND DOWNLOAD按钮就能在板子上看到现象并能进行调试。

水平有限,如果有错误的地方,请指正,thanks

cjok.liao@gmail.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简易呼吸灯c语言程序,呼吸灯 - 单片机教程 - C语言网

1.双定时器呼吸灯实现呼吸灯的实现原理就是让小灯的IO端口在一段时间里PWM由大到小变化的占空比输出&#xff0c;接着又由小到大的占空比输出&#xff0c;小灯显示效果就是时亮时暗地交替闪烁。首先我们用定时器0定时0.1ms&#xff0c;全局变量pwm在其中断函数里执行简单的从0到…

Python学习---面向对象的学习[深入]

类的深入学习 a. Python中一切事物都是对象 b. class Foo: pass obj Foo() # obj是对象&#xff0c;Foo类 # Foo类也是一个对象&#xff0c;type的对象 c. 类都是type类的对象 type(..) “对象”都是以类的对象 类() d. 类实际上是type类型的对象&#xff0c;所有的…

TCP/IP模型

应用层&#xff08;会话层&#xff0c;表示层&#xff0c;应用层&#xff09; HTTP FTP DNS 传输层&#xff08;传输层&#xff09; TCP UDP 网际层&#xff08;网络层&#xff09; IP 网络接口层(物理层…

c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

《c语言程序设计》课程设计报告-职工信息管理系统.doc还剩24页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容…

今年,自动驾驶卡车将在无人驾驶的情况下上路

文章来源&#xff1a;IEEE电气电子工程师Photo: TuSimpleFirst in Freight: In 2021, San Diego–based startup TuSimple plans to deploy autonomous trucks that drive themselves from pickup to delivery without anybody on board.Tesla、Uber、Cruise和Waymo等公司承诺&…

线上服务CPU100%问题快速定位实战

功能问题&#xff0c;通过日志&#xff0c;单步调试相对比较好定位。 性能问题&#xff0c;例如线上服务器CPU100%&#xff0c;如何找到相关服务&#xff0c;如何定位问题代码&#xff0c;更考验技术人的功底。 58到家架构部&#xff0c;运维部&#xff0c;58速运技术部联合进行…

最新研究:超级人工智能,从理论上就无法控制

文章来源&#xff1a;机器之心作者&#xff1a;Charles Q. Choi 编辑&#xff1a;泽南、杜伟近日&#xff0c;一项新的研究发现&#xff0c;从理论上来看&#xff0c;人类不可能控制超级人工智能。更为糟糕的是&#xff0c;这项研究也明确了人类无法在这种 AI 生成之时发现它…

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

来源&#xff1a; 脑极体2020年已经过去&#xff0c;无论我们过得顺遂平安&#xff0c;还是过得无比艰难&#xff0c;我们应该都会记住这一年。回顾2020年&#xff0c;在这个不同寻常的疫情之年&#xff0c;科技成为人类抗击疫情的关键&#xff0c;而人工智能技术投入抗疫战争之…

2021年值得关注的人工智能与机器学习的五大趋势

文章来源&#xff1a;科技心时代人工进行智能和机器可以学习是市场上的热门专业技术&#xff0c;其重要性在2020年达到顶峰&#xff0c;这两种信息技术发展已经到了广泛应用在各行业领域&#xff0c;其范围从电子商务到量子计算管理系统&#xff0c;从医疗诊断分析系统到消费电…

城市生态的机器人革命

来源&#xff1a; 脑极体城市居民能看到绿色、与自然亲近的机会&#xff0c;被高楼大厦挤压得越来越少&#xff0c;如果有一天&#xff0c;连机器人、无人车和无人机都要来侵占人类的休闲空间&#xff0c;会发生什么呢&#xff1f;至少目前看来&#xff0c;如果不采取措施&…

数据通信基础知识

常用的两种入网方式&#xff1a; 1. 电话线入网 电话线发出来的是数字信号&#xff0c;需要用调制解调器(&#x1f431;)转换位模拟信号 例如&#xff1a;我计算机发 在吗 &#xff0c;电话线发出来是01011100&#xff0c; 调制解调器把数字信号转为模拟信号发到广域网 之…

android okhttpclient设置编码,Android之okhttp实现socket通讯(非原创)

文章大纲一、okhttp基础介绍二、socket通讯代码实战三、项目源码下载四、参考文章一、okhttp基础介绍二、socket通讯代码实战1. 添加依赖和权限app的build.gradle下添加okhttp依赖implementation com.squareup.okhttp3:okhttp:3.8.1AndroidManifest.xml文件添加网络权限2. 添加…

张小龙两小时演讲全文:微信十年的产品思考

来源&#xff1a;微信公开课&#xff08;ID&#xff1a;wx-gongkaike&#xff09;文&#xff1a;张小龙大家好&#xff01;谢谢来到公开课现场的朋友们&#xff0c;让我感受到这是一个面对面的交流&#xff0c;而不是一个人面对屏幕的直播。2020&#xff0c;对很多人来说都是很…

android url格式化,Android利用SpannableString实现格式化微博内容

前言在Android开发中&#xff0c;有许多信息展示需要通过TextView来展现&#xff0c;如果只是普通的信息展现&#xff0c;使用TextView setText(CharSequence str)设置即可&#xff0c;但是当在TextView里的这段内容需要截取某一部分字段&#xff0c;可以被点击以及响应响应的操…

2021年中国AIoT产业全景图谱

来源&#xff1a;物联网智库&#xff08;iot101&#xff09;编辑&#xff1a;蒲蒲日前&#xff0c;在“2020 AIoT产业年终盛典”上&#xff0c;物联网智库正式发布全新升级版的《2021中国AIoT产业全景图谱报告》&#xff08;以下简称“报告”&#xff09;。据悉&#xff0c;这是…

统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜,Judea Pearl点赞...

来源&#xff1a;AI科技评论作者&#xff1a;陈彩娴、Mr Bear编辑&#xff1a;青暮近日&#xff0c;图灵奖得主、“贝叶斯网络之父”Judea Pearl在Twitter上分享了一篇新论文“What are the most important statistical ideas of the past 50 years?”&#xff08;过去50年中最…

自研芯片鸿蒙系统,华为智慧屏:自研智慧芯片鸿蒙系统 9月发布

7月26日消息 今日&#xff0c;华为在深圳举办媒体沟通会。华为消费者业务CEO余承东公布了华为智慧屏战略。华为全场景智慧化战略采用“18N”三圈层结构&#xff0c;覆盖家庭、办公、车载与运动四大场景&#xff0c;并以手机带动平板、PC、音箱、耳机等8个辅入口及更多外围生态设…

js下载文件

HTML与文件下载 如果希望在前端直接出发某些资源的下载&#xff0c;最方便快捷的方法就是使用HTML5原生的download属性&#xff0c; 例如&#xff1a; <a href"large.jpg" download>下载</a> 但显然&#xff0c;如果纯粹利用HTML属性来实现文件的下载&am…

二十世纪的十大科学骗局

来源&#xff1a;扬子晚报一般来说科学本是最讲求真实性的&#xff0c;但近些年来所谓轰动一时的科学“成果”中&#xff0c;却颇多假冒伪劣产品。1、百慕大“死亡三角”在众多科学骗局中&#xff0c;“百慕大”传说是影响最大且流传最广的一例&#xff0c;但它的起因只是第二次…

html 文本框 初始化,Flutter 文本框初始化时显示默认值

刚开始作Flutter文本框时候&#xff0c;使用的是TextField。彷佛大多数状况下都没有问题。代码形式以下&#xff1a;htmlclass _FooState extends State {TextEditingController _controller;overridevoid initState() {super.initState();_controller new TextEditingControl…