嵌入式开发入门课本例题求教

时间:2022-06-01 19:53:35
用于关闭看门狗初始化堆栈crt0.S
.text
.golbal _start
_start:
                ldr r0,=0x530000
                mov r1,#0x0
                str r1,[r0]
                ldr sp,=1024*4
                bl main
halt_loop:
                b halt_loop


Makefile里面有这么一句可能有用
arm-linux-gcc -g -c -o crt0.o crt0.s
arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf
开头.text .golbal是什么东西啊?
_start是不是必须是这个名字啊?
-Ttext是不是对应于开头那个.text啊?
谢谢各位高手啊!!!

7 个解决方案

#1


.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件

#2


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件
 正解 你看下ARM体系结构的书 书里边讲到这些东西了

#3


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件


搞明白了!谢谢啊!
.golbal xxx 中的xxx就是程序入口对应的表示!
至于-Ttext是make的规定 还有-Tdata -Tbss指定段的加载位置 如果没有后面两个默认data段和bss段在text段后!
谢谢啦!

#4


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件




xxx.lds文件怎么用啊?是Makefile可以引用的一个文件吗?能给个例子吗?

#5


SECTIONS  
{
. = 0;  /*0地址入口*/

.text :  /*代码段开始*/
{
start.o(.text) /*代码段的第一个代码部分*/ 
*(.text) /*其他代码部分*/
}

}

最简单的一个lds连接文件格式

#6


引用 4 楼 xiaoyufu007 的回复:
引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件




xxx.lds文件怎么用啊?是Makefile可以引用的一个文件吗?能给个例子吗?

lds文件最终目的其实就是讲述 可执行文件的各个部分在存储器中的存放方式、存放位置。
lds与.text这些伪指令可参考《ARM体系结构与编程》这本书。
网上也可以下到这本书的电子版。

#7


另外,关于arm汇编的话,《ARM体系结构与编程》这本书也降到了。也可以到网上下载《ARM体系结构与编程》来学习。

#1


.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件

#2


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件
 正解 你看下ARM体系结构的书 书里边讲到这些东西了

#3


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件


搞明白了!谢谢啊!
.golbal xxx 中的xxx就是程序入口对应的表示!
至于-Ttext是make的规定 还有-Tdata -Tbss指定段的加载位置 如果没有后面两个默认data段和bss段在text段后!
谢谢啦!

#4


引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件




xxx.lds文件怎么用啊?是Makefile可以引用的一个文件吗?能给个例子吗?

#5


SECTIONS  
{
. = 0;  /*0地址入口*/

.text :  /*代码段开始*/
{
start.o(.text) /*代码段的第一个代码部分*/ 
*(.text) /*其他代码部分*/
}

}

最简单的一个lds连接文件格式

#6


引用 4 楼 xiaoyufu007 的回复:
引用 1 楼 nemotian 的回复:
.text .golbal都是伪指令;.text表示预定义代码段。.golbal用来定义一个全局的符号
_start是标号,不是必须这个名字,是用.golbal来定义的代码段入口。
入口地址在连接文件中定义,如 :xxx.lds文件




xxx.lds文件怎么用啊?是Makefile可以引用的一个文件吗?能给个例子吗?

lds文件最终目的其实就是讲述 可执行文件的各个部分在存储器中的存放方式、存放位置。
lds与.text这些伪指令可参考《ARM体系结构与编程》这本书。
网上也可以下到这本书的电子版。

#7


另外,关于arm汇编的话,《ARM体系结构与编程》这本书也降到了。也可以到网上下载《ARM体系结构与编程》来学习。