第3季-裸奔吧-ARM-专题0/专题1

2013年9月21日 23:57:42

专题0-课程规划与学习方法

五步学习法

1.硬件相关理论

2.导读芯片手册

3.四维导图设计(流程图)

4.程序设计

5.在线调试程序

 

2013年9月22日 00:01:12

专题1-工欲善其事,必先利其器

第1课-裸机开发快速体验

1-1安装交叉工具链

新建新课程文件夹,进入文件夹

cd /home/S3/Part1/lesson1/,拷贝ARM-Tools工具包。

解压 tar xvzf ARM-Tools.tar.gz 

cd ARM-tools/

安装工具链

tar xvzf arm-linux-gcc-4.3.2.tgz -C /

进入到解压到的目录 cd /usr/local/arm/4.3.2/bin

修改环境变量,使arm-linux-gcc成为全局命令。

打开文件 vim /root/.bashrc

打开后添加  export PATH=$PATH:/usr/local/arm/4.3.2/bin   保存

使用命令使修改生效  source /root/.bashrc

再次运行 arm-linux-gcc    就不会提示 command not found

1-2编译裸机程序

复制裸机程序的三个文件到课程文件夹中

然后使用交叉工具链生成led.o文件   arm-linux-gcc -g -c led.S   会产生 led.o文件

然后使用链接器脚本生成.elf文件 arm-linux-ld -Tled.lds -o led.elf led.o

然后将.elf转换为二进制的文件 arm-linux-objcopy -O binary led.elf led.bin

 

也可以使用Makefile来生成以上文件:

使用make clean清除一下之前的文件

使用 make命令,也能生成led.bin文件

 

烧写二进制文件到开发板

先写入bootloader到SD卡,连接串口,然后从SD卡启动,

先格式化NoadFlash,再选择[v] Download uboot.bin

进入到  cd ARM-tools/   目录,insmod dnw_usb.ko  安装驱动

在虚拟机中连接USB接口。

运行dnw命令  ./dnw ../led.bin 50000000

终端显示:Sent 100% 234 bytes !OK

串口显示:DNW download succeeded

                 Download uboot succeed

此时,从NandFlash启动开发板,LED灯会点亮。

 

2013年9月22日 01:35:32

第2课-交叉工具链

#include<stdio.h>

int main()
{
        printf("hello world->\n");
}

使用 arm-linux-gcc

 

常用交叉工具:

1.交叉编译器 arm-linux-gcc  使用方法和gcc完全相同,不同之处在于,gcc是在/usr/include目录下寻找头文件,而arm-linux-gcc是在(使用arm-linux-gcc --help可以查看帮助)

   e.g arm-linux-gcc -g -c led.s  只编译,不链接,生成中间文件led.o

2.交叉链接器 arm-linux-ld

  e.g   arm-linux-ld -Tled.lds -o led.elf led.o 将led.o文件链接成led.elf文件

  -T 说明是连接器脚本 -o 指明链接之后的程序的名字 led.o 所在的位置是用来说明,这个elf文件是由哪些文件来连接生成的。

3.交叉转换器 arm-linux-readelf

  e.g1  arm-linux-readelf -a led.elf   可以查看程序运行的平台(file hello命令来查看程序的属性)以及大端小端运行模式。

           -a表示要查看这个文件的全部的信息

  e.g2 如果以上两种可能都正确,程序还是不能运行,则要判断程序所在的平台是否包含了所需的库文件  

          arm-linux-readelf -d hello (查看所需库)

4.交叉ELF文件工具 arm-linux-objdump

   使用arm-linux-gcc hello.c -o hello命令生成的hello程序实际是一个elf格式的文件,如下图。

  

   使用 arm-linux-objdump -D -S hello >dump (如果不加>dump会直接显示反汇编生成的文件,加了会输出到dump的文件中,可以使用vim dump命令查看反汇编生成的文件)

   也可以在编译时先使用 arm-linux-gcc -g hello.c -o hello  命令生成调试信息,

    然后再使用 arm-linux-objdump -D -S hello >dump 将C语言和反汇编生成的文件做对比

5.交叉反汇编器 arm-linux-objcopy

   使用交叉链接器 arm-linux-ld 生成的是elf格式的文件。不能在ARM平台上运行(PC机之所以能运行是因为Linux自带了elf文件解析器,而ARM不带),所以需要elf->2进制文件。

   使用 arm-linux-objcopy -O binary led.elf leb.bin

   -O表明输出文件的格式

 

 2013年9月25日 23:19:38

第3课-Makefile工程管理

 

 

 

2013年9月25日 23:19:49

第4课-链接器脚本

 

 

 

 

2013年9月22日 00:02:33

第5课-Eclipse集成开发环境

1-1.格式化Nand Flash

      Farmat the Nand Flash

1-2.硬件连接

      JTAG,串口,电源

     从Nand启动

 

2-1.安装gdb server

      解压 arm-linux-gdb-7.5.tar文件  tar xvzf arm-linux-gdb-7.5.tar.gz

      进入 cd arm-linux-gdb-7.5文件目录

      执行  ./build-all

2.2.修改环境变量  

     vim /root/.bashrc

     在/usr/local/arm/4.3.2/bin/上边添加

     export PATH=$PATH:/opt/arm-linux-gdb/bin/

2-3.保存,注销登录,查看arm-linux-gdb

      版本显示:GNU gdb (GDB) 7.5

      按q可以退出。

 

3-1.安装Jlink软件

      解压 tar xvzf JLink_Linux_V434a.tgz

      进入 cd JLink_Linux_V434a 目录

3-2.复制文件

     cp -d libjlinkarm.so* /usr/lib -f

     cp 45-jlink.rules /etc/udev/rules.d/

3-3.运行   ./JLinkGDBServer

    (进入  /home/S3/Part1/lesson1/ARM-tools/JLink_Linux_V434a   目录,SD卡启动)

      读出ARM11

 

4-1.安装eclipse

      使用 which eclipse   找到eclipse安装路径

      进入到 cd /usr/bin  目录下

      使用  mv eclipse eclipse-back  给原来的eclipse改个名字

      因为原来的eclipse版本不对。

4-2.回到 cd /home/S3/Part1/lesson1/ARM-tools 目录

      解压  tar xvzf eclipse-cpp-helios-SR2-linux-gtk.tar.gz

      进入 cd eclipse 目录

4-3.运行 ./eclipse 可执行程序

      选择工程路径,修改为 /home/S3/Part1/lesson1  选择OK

4-4.启动后会出现错误,再次启动。

 

5-1.配置eclipse

      安装插件,首先确保linux能上网

     

    

      输入地址 http://opensource.zylin.com/zylincdt

      点击Add  出现Pending  等待之后出现 Zylin Em....插件,选择插件,然后点击 Next  之后安装。安装完成后选择 Restart Now  重启eclipse

5-2 新建工程

      File-New-MakeFileProject...

      输入工程名字,找到工程文件路径。

5-3编译工程

     Project-BuildAuto...  去掉自动编译

     点击工程,右键CleanProject 清除编译好的文件

     点击Project-BuildAll  即可编译工程。

5-4点击Dubeg,配置文件

     双击最下边的Zylin添加调试文件

     输入调试名称,找到调试的elf文件,/home/S3/Part1/lesson1/led/led.elf

     修改Debugger文件,去跳停止到main处,修改GDB debugger的工具名为arm-linux-gdb

     在第三也Conmads中添加初始化命令,使用gedit打开init文件,复制,然后点击 Apply 保存。

5-5点击Dubeg,使用刚才的调试名称的文件启动调试。调试窗口如下:

      Variables:变量

      Registers:寄存器

      Breakpoints:断点

      Dubeg:调试

错误

 

posted @ 2013-11-10 12:58  电子木木  阅读(339)  评论(0)    收藏  举报