ARM linker这一项,里面有output,options,layout三项是很重要的。
output里有一项是simple image {RO base,RW base},什么是ro base?什么是rw base?ro 指的是 只读地址,也就是程序代码地址 ,rw指的是数据地址,也就是存放数据的地址。这里所说的都是ram中的 东西。在线调试的时候,我的ram地址是0x0c000000,所以可以把ro base设置成0x0c000000,rw base 设置成0x0c200000,在options 里面,把image entry point设置成0x0c000000,就可以正常工作了。 当要进行flash烧写时,因为烧写flash是从0x000000开始的,所以这时ro应该设置成0x000000,rw设置 成0x0c000000,image entry point也设置成0x0000000,这样就能进行正常工作了。
以下题目以SAMSUNG单片机为参考;
1、 当前堆栈指针SP为0C0H,在执行完下列三条指令后,R3的值存入______地址中。
PUSH R1
PUSH 20H
PUSH R3
2、 ADCON (A/D Converter Control Register) 的bit2和bit1两位为时钟选择位,为00选择f/16,01选择f/8,10选择f/4,11选择f/1。Bit0为AD转换启动位,bit7-bit4为转换引脚输入选择位。建立AD转换需要10个时钟,A/D转换1位需要4个时钟,若单片机采用4.00Mhz的外部晶振,当ADCON置为00000101后,转换完一路10位精度的AD至少需要的时间为______。
3、 若:R0=0C7H,R1=02H,R2=01H,寄存器00H=2BH,寄存器01H=02H,寄存器02H=23H,
执行完指令: “XOR R0,@R1 ” 后,R0=______,R1=______。
4、下段程序为164数据串并转换子程序,请在合适位置完善其中遗漏的两条语句。
send_data_to_164:
ld r10,#c_send_num
send_data_to_164a:
and p_port_164_ab,#~p_164_ab
and p_port_164_clk,#~p_164_clk
rlc r_data_send
or p_port_164_ab,#p_164_ab
send_data_to_164b:
nop
nop
nop
nop
dec r10
jr nz,send_data_to_164a
and p_port_164_clk,#~p_164_clk
ret