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

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

  1. linux开发板led怎么亮,飞凌OK6410开发板(裸板) 第一个点亮LED灯程序

    飞凌OK6410开发板(裸板) 第一个点亮LED灯程序,主要的C程序,完整程序请下载附件. #define rGPMCON          (*(volatile unsigned *)(0x7F0 ...

  2. 基于stm32mp157 linux开发板ARM裸机开发教程4:Cortex-A7 内核存储系统与流水线(连载中)

    前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...

  3. 基于stm32mp157 linux开发板ARM裸机开发教程3:Cortex-A7 架构与工作模式(连载中)

    前言: 目前针对ARM Cortex-A7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FS-MP1A开发板(STM32MP157开发板) ...

  4. linux开发板led怎么亮,TQ2440开发板上实现按键点亮LED(转载)

    //声明:该文章是在网上搜到的,对作者表示感谢. 文章记录了作者在TQ2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误. 一.驱动开发流程 二.驱 ...

  5. crt无法网络连接linux开发板,securceCRT网络连接不正常解决途径

    作为一名初学的小白,在完成作业练习时出现了很多别人看起来简单却让我十分头疼的问题,其中最麻烦和头疼的就是用securceCRT时出现的网络连接不正常. 在查看VM ware虚拟机时用ifconfig查 ...

  6. mini2440开发板学习裸机开发——day1 裸机运行LED灯程序

    开发背景:系统:ubuntu18.04系统 开发板:mini2440 串口连接工具 J-link连接工具 工具:secureCRT J-link 本次学习基于韦东山老师的嵌入式linux应用开发手册书 ...

  7. VScode使用SSH连接Linux(Ubuntu)系统程序开发,详细教程

    VScode使用SSH连接Linux(Ubuntu)系统程序开发,详细教程 VScode使用SSH连接Linux(Ubuntu)系统程序开发 1.安装SSH 2.SSH连接远程服务器 3.远程编程开发 ...

  8. 基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录

    基于正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2)的个人自学记录 硬件环境 正点原子Linux开发板(ALIENTEK I.MX6U ALPHA V2.2) 底板+核 ...

  9. 使用QT程序控制Linux开发板上的继电器(一)

    `使用QT程序控制Linux开发板上的继电器(一)` 测试平台介绍 测试系统接线 编写PlatformIO驱动程序 修改设备树 烧录设备树 Platform字符设备驱动设备框架 完善驱动框架 编写测试 ...

最新文章

  1. 散粉在哪个步骤用_美妆大神的定妆大法竟然这么好用?用完都不想卸妆了
  2. 冲向大牛之安卓---2014.11月面试经常碰到的一些问题
  3. pyqt5 输入确认_对PyQt5的输入对话框使用(QInputDialog)详解
  4. Spring Boot WebFlux 上手教程
  5. 一篇不错的vim命令入门
  6. (转)C# System.Diagnostics.Process.Start使用
  7. 正则表达式(Regex)
  8. 获取当前本地登录的QQ号码
  9. HANA SQL基础
  10. 基于Python的心电信号检测与处理
  11. 基于注意力对抗生成网络的AlphaFold从氨基酸序列建立三维蛋白质结构
  12. wps自动生成目录总是有正文内容
  13. php实现豆瓣isbn查询API接口制作
  14. 大疆遭遇“口袋无人机”革命?
  15. KMPlayer 双重字幕设置和配色方案
  16. QQ5.1 去广告显IP新春完美版【木子李作品】
  17. 虚拟服务器14001,免费秒赞主机空间
  18. 影响我此生的几首歌(转载)
  19. 虚拟机MAC地址冲突,如何生成新的mac地址
  20. Win10 误删winsock注册表修复。 winsock.reg

热门文章

  1. LeetCode 100. 相同的树(二叉树遍历)
  2. LeetCode 17. 电话号码的字母组合(回溯)
  3. 计算机网络cr什么意思,现在网络上的“CR”是指什么意思
  4. hal库开启中断关中断_STM32对HAL库的定时器中断
  5. pythonb超分辨成像_深度原理与框架-图像超分辨重构-tensorlayer
  6. 外星人装深度linux,17xR4深度拆机教程、加装MSATA固态硬盘及评测
  7. webgis 行政图报错_WebGIS 地图 示例源码下载
  8. jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析
  9. 知识图谱入门知识(二)事件抽取(EE)详细介绍
  10. 逻辑回归与朴素贝叶斯的战争