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)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)
}
}
- ARM裸机开发快速体验
- 专题1:裸机开发快速体验+交叉工具链
- [学习日志][2-2-1][裸机开发快速体验]
- arm裸机开发
- ARM裸机开发学习方法
- linux 裸机开发arm程序
- ARM的裸机开发环境
- ARM裸机开发-bootloader-汇编语言
- ARM裸机开发环境总结
- ARM的裸机开发环境
- ARM裸机开发环境搭建
- ARM裸机开发笔记3(ARM寄存器)
- ARM裸机开发-bootloader-内部看ARM
- ARM裸机开发-bootloader-内部看ARM
- ARM下裸机开发环境大全
- ARM-Tiny6410-裸机开发-Led && Button && Timer
- Eclipse开发调试ARM裸机程序
- eclipse ARM裸机开发环境的搭建
- Codeforces Round #334 (Div. 2) B. More Cowbell
- 关于Oracle有两个或者多个实例时,用SID来区分目前oralce使用的是哪个实例。
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- struts2如何获取Request-Session-ServletContext-Response
- UI之textField、Button的创建方法及各属性
- ARM裸机开发快速体验
- java反射的性能问题
- linux ffplay 生成
- http://www.cnblogs.com/kaituorensheng/p/3814925.html
- 杭电 2544 最短路(bellman详解)
- jQuery实现显示和隐藏功能
- install wtl9.1 and .lib of debug
- iOS 9 平台上 AFNetworking 框架 3.0 版本解决的问题和问题解决
- C++输入输出