基于ARM Cortex -A8 的S5PV210处理器的学习笔记(1)

          时间飞快,转眼间就大二快结束了。最近我一直在思考自己毕业后想走的方向。根据我的自身情况,我决定走ARM+Linux路线,向嵌入式驱动方向走。因此,好不容易才向老师借来个开发板Smart210 。为此,我要努力学习,尽量每周更新一篇学习笔记。好了!废话不多说,我们来先来了解一下Smart210 开发板。

        先来看看Smart210 的核心板S5PV210

基于ARM Cortex -A8 的S5PV210处理器的学习笔记(1)_第1张图片基于ARM Cortex -A8 的S5PV210处理器的学习笔记(1)_第2张图片

      Smart210是高性能的Cortex-A8核心板,采用三星S5PV210作为主处理器,运行主频 1GHzS5PV210内部集成了PowerVR SGX540高性能图形引擎,支持3D图形流畅运1080P大尺寸高清视频,流畅运行 Android, LinuxWinCE6等高级操作系统,非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。

  由于之前有研究过stm32,所以先打算从裸机程序入手。玩单片机的都知道,第一课就是点亮LED灯。下面,开始进入cortex A8 的第一课。

一、开发环境

   (1).学习基础  学过简单的C语言,有用过linux操作系统(我往后发的学习笔记都基于Linux操作系统)

   (2).学习平台   Linux操作系统(可以是linux虚拟机)。

   (3).交叉编译器  arm-linux-gcc-4.5.1

      下面简单介绍一下arm-linux-gcc-4.5.1的安装方法:

      1.先在光盘或网上找到arm-Linux-gcc-4.5.1-v6-vfp-20101103.tgz,然后进行解压

      #tar xvzf arm-Linux-gcc-4.5.1-v6-vfp-20101103.tgz -C /usr/local/arm

      2.修改环境变量

      #vi /etc/profile

      在最后添加 export PATH=$PATH:/usr/local/arm/opt/FriendlyARM/toolschain/4.5.1/bin  保存退出

      3.在终端输入  source /etc/profile

      4.终端输入  arm-linux-gcc -v  若有版本信息,表明安装成功

      ** 如果路径没错,却提示 NO Such file or directory. 有可能是ubuntu版本问题,自己的linux系统是64位,但交叉编译器是32位,应该要安装一个      lib32ncurses5库。

   (4).开发板  用的是smart210 开发板

   (5).学习必备文档 

              Tiny210V2_V1.0_120713_sch.pdf    (核心板的原理图)

              Tiny210V2_SDK_V1.0_120804_sch.pdf   (底板的原理图,根据型号来选择)

              S5PV210_UM_REV1.1.pdf         (S5PV210的芯片手册)

二、编译流程

   我们首先参考光盘资料 裸机程序的第一个例程进行分析

   1.工程文件   

           start.S     这包含用汇编写的led点亮的代码

           Makefile    编译文件,描述了整个工程的编译链接规则

           mkv210_image.c 为了给原始bin文件加16byte 的包头,以便启动设备检验通过 (详细的可以参考 裸机程序开发指南)

           write2sd    脚本文件,用于把bin文件加载到SD卡的扇区1

   2.编译过程   

           先插入SD 卡,终端输入:

           #cd led        //进入工程目录

           #make         //按照MakeFile 的规则进行编译

           #chmod 777 write2sd  //修改文件权限

           #./write2sd      //把bin文件烧录到SD卡

    **注意:(1).write2sd  需要根据自己的实际情况进行修改   ......210.bin of=/dev/sdb ......

           可以在未插入SD卡前,输入 ls /dev/  ,再插入SD卡,输入 ls /dev/  ,观察多了哪个,把这个代替了write2sd 的sdb

        (2).如果出现提示 error while loading shared libraries:libz.so.1;cannot open shared object file: No such file or directory

           出错是因为缺少lib32z1 的库 ,可以输入 sudo apt-get install lib32z1  来解决。


   3.Makefile编译过程分析  (Makefile 的详细语法请参考 《跟我一起写Makefile》)

      下面的代码源于光盘裸机程序第一个例子Makefile:

      led.bin:start.o

         arm-linux-ld -Ttext 0x0 -o led.elf $^       #将所有的.o文件链接成elf文件

         arm-linuc-objcopy -0 binary led.elf led.bin    #将elf文件抽取成bin文件

         arm-linux-objdump -D led.elf > led_elf.dis    #elf文件反编译成dis文件

         gcc mkv210_image.c -o mkmini210          #处理bin文件

         ./mkmini210 led.bin 210.bin

      %.o : %.S

         arm-linux-gcc -o $@ $< -c             #将.s/.c文件编译成.o文件

      %.o : %.c

         arm-linux-gcc -o $@ $< -c

      clean:

         rm *.o *.elf *.bin *.dis mkmini210 -f

      下面自己整理了一张流程图来简单解释上面代码的编译过程
  
基于ARM Cortex -A8 的S5PV210处理器的学习笔记(1)_第3张图片

       若想了解每句代码的具体意义,请参考 裸机程序开发指南 ,在此不过多解释。


接下来,就是SD卡插入开发板,插上电源,即可看到现象。至于,led点亮的具体实现代码部分由于涉及到汇编,等学习完汇编才来具体分析。


下一个学习计划:就是ARM 的汇编

以上是我第一次写学习笔记,若有任何错误,请各位大神指教!!!       





你可能感兴趣的:(ARM,cortex-A8,学习笔记)