1 系统组成
BootLoader:操作系统引导程序
内核:
文件系统:应用程序(用户开发的、网上下载的)
2 安装USB驱动
dongry@d-linux:~$ insmod usb_dnw.ko //安装USB驱动
dongry@d-linux:~$
kernel:GuoQian USB driver for DMW! //出现这一句说明驱动安装成功
3 查看驱动是否启动
dongry@d-linux:~$lsmod //查看驱动是否启动当中
出现usb dnw说明驱动已经启动
4 Linux系统安装
首先SEGGER J-FLASH ARM将引导安装程序下载到NOR flash;(引导安装程序通过JTAG下载到开发板的NOR flash),NOR flash通过USB下载线下载到NAND flash。
注:Nand flash相当硬盘
系统安装步骤:
(1)一切连接就绪后(开发板串口与PC机、开发板USB与PC机等)打开软件SecureCRT并连接好出现如下界面
(2)系统要安装到Nand flash,首先要格式化一下:
(3)然后安装BootLoader
把文件下载到内存当中,然后安装服务程序会自动到内存中取这个文件,然后烧录到Nand Flash中
(4)安装Linux内核
(5)下载文件系统
下载完成
5 如果找不到arm-linux-gcc安装路径可以修改bash环境路径
dongry@d-linux:~$vim /root/.bashrc //只是一个例子,安装路径可能不同
dongry@d-linux:~$vim /root/.bashrc //创建路径
dongry@d-linux:~$source /root/.bashrc //让路径生效
6 交叉编译链工具实例
/***********************************
假如在led文件中有led.lds led.S Makefiles三个文件
**************************************/
dongry@d-linux:~$ cd led dongry@d-linux:~/led$ ls
led.lds led.S Makefile dongry@d-linux:~/led$ arm-linux-gcc -g -c led.S //让led.S生成一个编译文件.o
dongry@d-linux:~/led$ ls
led.lds led.o led.S Makefile dongry@d-linux:~/led$ arm-linux-ld -Tled.lds -o led.elf led.o //让led.o生成一个.elf文件
dongry@d-linux:~/led$ ls
led.elf led.lds led.o led.S Makefile dongry@d-linux:~/led$ arm-linux-objcopy -O binary led.elf led.bin //生成一个.bin的二进制文件
dongry@d-linux:~/led$ ls
led.elf led.lds led.o led.S led.bin Makefile dongry@d-linux:~/led$ make clean //删除刚才编译的各种文件
dongry@d-linux:~/led$ ls
led.lds led.S Makefile dongry@d-linux:~/led$ make
led.elf led.lds led.o led.S led.bin Makefile
7 下载二进制文件到裸机
dongry@d-linux:~$ ./dnw ./led.bin //按回车 //出现:
addr=
File name:./led.bin
File size: bytes
Start Seeding data...
Seet % bytes 10k
8 链接器脚本
链接器脚本组成:段、起始链接地址、对齐、变量、代码段首文件
https://www.cnblogs.com/li-hao/p/4107964.html
8.1 链接器脚本的创建
(1)创建段信息(包括代码段、数据段、bss段)
SECTION
{
.text : //创建代码段
{
*(.text)
} .data : //创建数据段
{
*(.data)
} .bss : //创建bss段
{
*(.bss)
}
}
(2)设置起始链接地址
SECTION
{
. =0x00000000; //设置起始链接地址
.text :
{
*(.text)
} .data :
{
*(.data)
} .bss :
{
*(.bss)
}
}
(3)对齐
SECTION
{
. =0x00000000;
. =ALION(); //四字节对齐
.text :
{
*(.text)
} . =ALION(); //四字节对齐
.data :
{
*(.data)
} . =ALION(); //四字节对齐
.bss :
{
*(.bss)
}
}
(4)变量
SECTION
{
. =0x00000000;
. =ALION();
.text :
{
*(.text)
} . =ALION();
.data :
{
*(.data)
} . =ALION();
bss_start = . ; //变量
.bss :
{
*(.bss)
}
bss_end = . ; //变量
}
(5)代码段首文件
SECTION
{
. =0x00000000;
. =ALION();
.text :
{
start.o(.text) //代码段首文件
*(.text)
} . =ALION();
.data :
{
*(.data)
} . =ALION();
bss_start = . ;
.bss :
{
*(.bss)
}
bss_end = . ;
}
8.2 运行链接器脚本
arm-linux-ld -Tled.lds start.o main.o -o led.elf //生成.elf文件
arm-linux-objcopy -O binary -S led.elf led.bin //生成二进制文件 arm-linux-objdump -D -S led.elf > dump //反汇编