嵌入式爱好者

查看: 30340|回复: 18

转帖:<筱静的ARM学习日志_01>ARM11裸机环境搭建与程序调试详解

[复制链接]

0

主题

0

帖子

0

积分

扫一扫,手机访问本帖
发表于 2013-4-3 16:19:48 | 显示全部楼层 |阅读模式
首先说明一下,我只是一个嵌入式的新手,之前在学校的时候只学过简单的51单片机、基础的C语言和数电模电。上课的时候听老师说过嵌入式,但对这个词没有什么概念,也不知道学嵌入式能干什么。虽然自己在网上看了很多关于嵌入式学习的帖子,但还是一知半解,不知该从何入手。那种茫然的感觉真挺郁闷的--!
  快毕业了,有幸来到一家从事嵌入式产品设计的公司实习。在师傅的带领下开始接触基础的嵌入式开发。一个星期的岗前培训给我最大的感觉是:有人带比自己学快很多。也正是这个想法,让我打算通过日志记录自己每天的收获和感悟,分享给大家。希望能够通过这种形式和正在学嵌入式的朋友们互相交流,也真心希望能够得到行业内前辈们的指导。
  PS:由于个人能力暂时比较有限,在这里不敢妄谈经验。不过帖子里每一步都是我亲自操作完成的,如果帖子描述的不是很详细,大家可以看一下操作视频。希望通过图文+视频的方式,将实现过程更清晰的呈现给大家,也希望各位前辈在闲暇之余能指点一下,这里先谢过了~(*^__^*) 嘻嘻……
  
  先上视频了
  第一次录的没经验,分辨率设置低了,上传优酷之后变得有点儿模糊,所以下面也给出了网盘地址,里面是视频源文件,70M左右

优酷版视频点击观看

原版视频网盘版点击这里下载

PS:等到视频录制结束之后再听才发现和之前的初衷差别蛮大的,尤其是开场白,这是后来加上的,感觉还不如不加呢o(╯□╰)o原本希望用一种轻松的语气和讨论的方式和大家交流,结果听起来很像是说教,过于正式和严肃了。第一次录制视频,心情比较复杂和忐忑,语言表达的也很不自然...希望在今后的视频中可以带给大家一种更加轻松的感觉。学习不一定是痛苦的,交流不一定是严肃的,简单一些,或许更自然。
  
第一期内容是最基础的无操作系统下基于ARM处理器流水灯的实现。
开发环境:WinXP
软件工具:RVDS2.2下的CodeWarrior、AXD,至于RVDS2.2软件,只要从网上下载并安装到自己的计算机上就可以了
硬件平台:ARM11 S3C6410处理器、J-LINK V8(使用前要安装相应的驱动哦~)

    在这里想先和大家分享一个小感悟,这两天才发现的:
就以这个流水灯实现为例,之前在学校老师讲流水灯的实现用了6节课,而且听完了还不是很清楚。原因在于老师会先讲什么是寄存器,什么是寻址,然后是汇编的各个指令...其实这些内容里面和流水灯实现关联都不够紧密,听的很多,可没什么重点。如果从目标出发来看这个问题我觉得会更清晰。

    流水灯为什么会亮->LED发光->LED为什么会发光->LED两端有了高低压差->LED两端为什么会有压差->电路连接一段是高电平另一端是ARM的某个管脚->只要ARM管脚输出低电平LED就会亮->ARM管脚如何输出低电平/哪个管脚输出低电平?

这样一想思路就清楚了。流水灯的实现也就很简单了:
1.查看原理图,找到连接LED的ARM管脚
2.查看ARM手册,找到这个管脚的位置及控制方法(寄存器)
3.使用某个软件(这里使用的是ADS)编写一个控制该寄存器程序
4.通过工具(JLINK)连接PC和处理器平台,把编写好的程序从PC机下载到处理器平台运行。
  这是自己这几天实习的小感悟,换一种思路学习,或许会事半功倍,希望能给初学者朋友一些启发。

  接下来是流水灯在ARM11处理器实现的具体内容:

  首先是原理图和寄存器介绍:


这个呢,就是led的原理图,这里就可以明白的看到led是如何点亮的。VDD33V代表高电平,只要NLED3输出为低电平就可以点亮LED灯了。



这就是管脚的连接方式,这样就可以找到控制led的寄存器。方块里面的代表了ARM处理器的相关引脚和功能。
回复

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2013-4-3 16:25:14 | 显示全部楼层





这三张截图向我们介绍了控制led灯的寄存器的概况



这时在RVDS2.2中创建一个工程,用到的软件就是CodeWarrior



这张图显示了在所建的工程中添加一个文本文件用来编写实现代码
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2013-4-3 16:30:15 | 显示全部楼层


代码写好之后,我们需要配置一下Release中的对应选项









点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2013-4-3 16:33:25 | 显示全部楼层
在调试之前呢,我们需要添加相应的JLINK动态库





这张图中可以大致地看出JLINK的连接方式,连接比较简单,线都是防误插的,只要都连上就可以喽~
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2013-4-3 16:34:12 | 显示全部楼层
最后我在这里把视频中的代码也贴上来,希望朋友们可以用到:
  
  Main.c文件:
  #define rGPMCON    (*(volatile unsigned *)(0x7F008820))
  #define rGPMDAT    (*(volatile unsigned *)(0x7F008824))
  #define rGPMPUD    (*(volatile unsigned *)(0x7F008828))
  void msDelay(int time)
  {
        volatile unsigned int i,j;
        for(i = 0; i < 2000000; i++)
            for(j=0; j<time; j++);
  }
  void GPIO_Init(void)
  {
      rGPMCON= 0x11111;//初始化控制寄存器,使每一个寄存器处于output状态
    rGPMDAT= 0X1F;//初始化控制寄存器,使每一个灯都灭着
  }
  void LedTest(void)
  {
      volatile unsigned int i;
      while (1)
      {
          for(i=0; i<4; i++)
          {
              rGPMDAT= ~(1<<i);//用位操作控制灯的循环点亮
              msDelay(10);//延时10ms
          }
  
      }
  }
  void Main(void)
  {
      GPIO_Init();
      LedTest();
  }
  
  Init.s
    
  IMPORT  Main
      AREA |C$$code|, CODE, READONLY
      global        start
  start            
    bl  Main
    END

  裸机的相关知识比较少,这期就差不多讲完了。下期开始主要是Linux的相关内容,大家要是有什么想了解的知识点可以在帖子里面告诉我,只要是我会的,尽量录制在下期视频和大家交流。
点评回复 支持 反对

使用道具 举报

0

主题

972

帖子

900

积分

i.MX6Q通行证i.MX6UL通行证TCU通行证AM335x通行证

发表于 2013-4-3 17:21:41 | 显示全部楼层
楼主挺细心的,从初学者的角度表述学习过程,感谢楼主的分享,希望再接再厉啊~:)
技术支持电话:0312-3119192
技术支持邮箱:Hardware@forlinx.com
点评回复 支持 反对

使用道具 举报

lpf2841102 该用户已被删除
发表于 2013-4-4 09:58:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

积分

 楼主| 发表于 2013-4-4 17:30:07 | 显示全部楼层
额,帖子是从21ic转的,这个帖子的作者妹子好像是要出系列视频,不妨和她联系一下,大家可以一起学习;P
点评回复 支持 反对

使用道具 举报

creatorliu 该用户已被删除
发表于 2013-4-6 11:34:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

hnxyzhw 该用户已被删除
发表于 2013-4-8 15:33:57 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

0

主题

9

帖子

38

积分

发表于 2013-4-13 22:39:31 | 显示全部楼层
向楼主学习!
点评回复 支持 反对

使用道具 举报

ruiyang 该用户已被删除
发表于 2013-4-22 21:05:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

pulk 该用户已被删除
发表于 2013-11-8 07:57:04 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

huaiqiao 该用户已被删除
发表于 2014-5-30 16:50:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

6

主题

37

帖子

45

积分

发表于 2014-10-3 23:01:51 | 显示全部楼层
kingG 发表于 2013-4-3 16:25
这三张截图向我们介绍了控制led灯的寄存器的概况

ads的可以么
点评回复 支持 反对

使用道具 举报

skyxylx77 该用户已被删除
发表于 2014-10-4 16:17:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

skyxylx77 该用户已被删除
发表于 2014-10-4 16:22:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
点评回复 支持 反对

使用道具 举报

1

主题

2

帖子

18

积分

发表于 2016-5-20 09:05:34 | 显示全部楼层
很好,支持!
怎么很多用户被删除了,看不到内容。
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-22 20:45

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表