ARM裸机开发快速体验

来源:互联网 发布:淘宝有意思的店铺 编辑:程序博客网 时间:2024/05/16 02:55

一。Linux平台:
自己写makefile
自己写lds脚本
自己搭建调试环境
二。裸机开发流程
(1).编写裸机程序
(2).调试裸机程序
(3).编译 链接 格式转换成二进制映像
1.安装交叉工具链:
把课程里面的工具包拷贝到Linux,解压arm-linux-gcc到根目录-C /
交叉工具在usr/local/arm/4.4.3/bin/
2.修改环境变量:
vim /root/.bashrc
添加:export PATH=$PATH:/usr/local/arm/4.4.3/bin
生效:source /root/.bashrc
3.编译生成.o
arm-linux-gcc -g -c led.S
4.链接生成.elf
arm-linux-ld -Tled.lds -o led.elf led.o
5.格式转换生成.bin
arm-linux-objcopy -O binary led.elf led.bin
(4).烧写到开发板
dnw

三。makefile工程管理
(1)为什么需要makefile(必备技能)
把很多工作合并成一个简单的命令make
(2)makefile构成
1.规则:如何生成目标文件(目标只能一个)
1.1格式
目标: 依赖
命令
1.2伪目标
如果没有依赖就是伪目标,比如clean
格式 .PHONY:目标
1.3最终目标
makefile第一条规则
2.变量:
2.1自定义变量
2.2系统定义的默认变量
@ 代表目标
<3.armlinuxgccgo@ -c $^

(3)makefile使用技巧
1.去回显
在命令前面加@符号
2.文件名
2.1默认情况下 名字叫Makefile或者makefile
2.2如果改名 直接make找不到文件 可以使用-f
格式:make -f filename

四。链接器脚本
(1)脚本神奇作用

(2)脚本构成
1.基本构成:段
创建段信息:vi led.lds
SECTIONS{
.text :
{
*(.text)
}
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
}

2.设置起始链接地址:(点代表当前)

SECTIONS{
. = 0x0;
.text :
{
*(.text)
}
.data :
{
*(.data)
}
.bss :
{
*(.bss)
}
}
用反汇编工具来看:
arm-linux-objdump -D -S led.elf >dump
vi dump
看到起始地址是00000000
如果修改.=0x30008000;
通过反汇编查看起始地址变为30008000

3.对齐设置
规则:4字节对齐

SECTIONS{
. = 0x0;
. = ALIGN(4);
.text :
{
*(.text)
}
. = ALIGN(4);
.data :
{
*(.data)
}
. = ALIGN(4);
.bss :
{
*(.bss)
}
}

4.使用变量

SECTIONS{
. = 0x0;
. = ALIGN(4);
.text :
{
*(.text)
}
. = ALIGN(4);
.data :
{
*(.data)
}
. = ALIGN(4);
bss_start = . ;
.bss :
{
*(.bss)
}
bss_end = . ;
}

5.设置代码段首文件
SECTIONS{
. = 0x0;
. = ALIGN(4);
.text :
{
start.o(.text)
*(.text)
}
. = ALIGN(4);
.data :
{
*(.data)
}
. = ALIGN(4);
.bss :
{
*(.bss)
}
}

0 0
原创粉丝点击