诚信经营,质量为首,诚信至上,真诚为您服务
--------------------------------------------------
允许我给您介绍下这个产品和我们的服务:现货 全新原装*** 15天质量问题无条件包退换
一年质保 完善的***服务 雄厚的技术人才后盾 真正的为客户排忧解难
客户的满意 是对我们的肯定 更是我们的动力
单子,得之,我幸。不得,我力争到底 全心服务
--------------------------------------------------
ABB 3HAC0373-1 DSQC 361
优质的产品★优质的价格★优质的***★优质的服务,是您***佳的选择!
ARM处理器支持位置无关的程序设计,这种程序加载到存储器的任意地址空间都可以正常运行,其设计方法在嵌入式应用系统开发中具有重要的作用。尤其在裸机状态下开发Bootloader程序及进行内核初始化设计;利用位置无关的程序设计方法还可以在具体应用中用于构建***率动态链接库,因而了解位置无关的程序设计方法,有助于开发人员设计出结构简单、清晰的应用程序。
应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有目标文件进行重***(relocatiON),建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重***过程由操作系统自动完成。
在设计Bootloader程序时,必须在裸机环境中进行,这时Bootloader映像文件的运行地址必须由程序员设定。通常情况下,将Bootloader程序***到ROM的0x0地址进行启动,而在大多数应用系统中,为了快速启动,首先将Bootloader程序拷贝到SDRAM中再运行。一般情况下,这两者的地址并不相同,程序在SDRAM中的地址重***过程必须由程序员完成。实际上,由于Bootloader是系统上电后要执行的***段程序,Bootloader程序的拷贝和在这之前的所有工作都必须由其自身来完成,而这些指令都是在ROM中执行的。也就是说,这些代码即使不在链接时所指定的运行时地址空间,也可以正确执行。这就是位置无关代码,它是一段加载到任意地址空间都能正常执行的特殊代码。
位置无关代码常用于以下场合:
程序在运行期间动态加载到内存;
程序在不同场合与不同程序组合后加载到内存(如共享的动态链接库);
在运行期间不同地址相互之间的映射(如Bootloader程序)。
虽然在用GCC编译时,使用-fPIC选项可为C语言产生位置无关代码,但这并不能修正程序设计中固有的位置相关性缺陷。特别是汇编语言代码,必须由程序员遵循一定的程序设计准则,才能保证程序的位置无关性。
ARM程序的位置无关可执行文件PIE(PositionIndependent Executable)包括位置无关代码PIC和位置无关数据PID(PositionIndependent Data)两部分。
PID主要针对可读写数据段(.data段),其中保存已赋初值的全局变量。为实现其位置无关性,通常使用寄存器R9作为静态基址寄存器,使其指向该可读写段的首地址,并使用相对于基址寄存器的偏移量来对该段的变量进行寻址。这种方法常用于为可重入程序的多个实例产生多个***的数据段。在程序设计中,一般不必考虑可读写段的位置无关性,这主要是因为可读写数据主要分配在SDRAM中。
PIC包括程序中的代码和只读数据(.text段),为保证程序能在ROM和SDRAM空间都能正确运行(如裸机状态下的Bootloader程序),必须采用位置无关代码程序设计。
PIC遵循只读段位置无关ROPI(ReadOnly Position Independence)的ATPCS(ARMThumb Procedure Call STandard)的程序设计规范:
(1) 程序设计规范1
引用同一ROPI段或相对位置固定的另一ROPI段中的符号时,必须是基于PC的符号引用,即使用相对于当前PC的偏移量来实现跳转或进行常量访问。
① 位置无关的程序跳转。在ARM汇编程序中,使用相对跳转指令B/BL实现程序跳转。指令中所跳转的目标地址用基于当前PC的偏移量来表示,与链接时分配给地址标号的***地址值无关,因而代码可以在任何位置进行跳转,实现位置无关性。
另外,还可使用ADR或ADRL伪指令将地址标号值读取到PC中实现程序跳转。这是因为ADR或ADRL等伪指令会被编译器替换为对基于PC的地址值进行操作,但这种方式所能读取的地址范围较小,并且会因地址值是否为字对齐而异。
但在ARM程序中,使用LDR等指令直接将地址标号值读取到PC中实现程序跳转不是位置无关的。例如: LDR PC, =main
上面的伪指令编译后的结果为: LDR PC, [PC, OFFSET_TO_LPOOL]
3HAB6320-1
3HAB6501-1
3HAC7019-1
3HAC7020-1
3HAC7021-1
3HAC1738-1
3HAC7019-2
3HAC7020-2
3HAC7021-2
63990019-4
2213874-12
2213874-9
3HAA3001-21
3HNP 01209-1
3HNP 01822-1
3HNP 02191-1
3046806
91207001
3I 003936
221301810
221301959
418585881
22130047-4
2213253-10
2213253-12
2213253-5
2213253-8
2213253-9
22136950-206
2213851-2
2213851-3
3HXG1000-138
22136950-202
2213844-1
2213875-1
190725205
3HAA2325-13
3HAA2325-11
3HAA2325-12
63550006-118
21850445-1
2185579-G
3HXB1000-11
63550006-117
63550006-253
3043513
5014274
3HAC021601-001
3HAC15477-1
3HNM 03656-1
68960011-BN
5012670
2185576-4
2185577-4
439644880
3HA***837-2
3HNM 04698-1
3HXG1000-209
3HNA000705-001
3HNA015923-001
3HNA009325-001
3HAC022171-001
3I 002986
3R 043448
3HAC022673-001
3HAC12147-1
3HAC7457-1
3HAC7457-2
3HAC7457-3
3HAC8705-2
3HAC9589-2
3HNM 03522-1
3HAB6637-1
3HAC0055-3
3HAC020122-001
3HAC020745-001
3HAC025432-001
3HAC025699-001
3HAC028064-001
3HAC0982-1
3HA***562-1
9964767
3HAC020113-001
3HAC020909-001
3HAC6018-3
3HEA802338-001
91116133
91204869
3HAC6018-11
3HAC6018-14
3HAC6018-8
3HAC6018-9
3HXB0100-132
9980617
63550006-266
3HXB1000-192
3HXD1000-64
3HXB0100-9
3HAC029855-001
3HAC8972-3
91208421
554880001
1SBN010010R1001
1SBN010010R1010
1SBN010040R1131
3HAB5196-2
3HEA800447-003
193825102
1SBN010040R1240
3HAB5196-1
3HAC17015-2
3HAC027349-001
3HAC028051-001
3HAC028051-004
3HAC5275-1
3HAC5276-1
3HAC5281-1
1SDA051368R1
505500880
558118892
3HEA802685-001
554934001
E554934001
3HAC17371-3
3HAC025176-001
3HAB3726-11
3HAC030791-001
3HAC3676-1
3HAC13657-1
3HNP 01790-1
3HNP 01793-1
3HNP 02872-1
3HNP 00081-1
3HNP 00106-1
3HNP 00107-1
6480208-A
2213862-2
3HAB3724-11
3HNP 01501-1
3HAC15897-9
2213862-12
2213862-14
2213862-15
2213862-19
2213862-8
3HAB3645-1
3HXD1000-56
63550006-252
3HXD1638-240
3HAC7149-3
3HNA008028-001
3HNA008124-001
3HAC025576-001
3HAC025576-002
3HAC13063-3
3HAC10746-7
3HAC10746-6
3HAC13063-6
3HAA2231-2
3HAB4236-1
3HAB6861-1
3HAC036207-001
3HAC8497-2
3HAC8497-3
3HAC027325-001
3HAC021243-002
3HAC3938-1
3HA***399-1
3HAB8979-1
3HAC12707-3
3HAC15988-1
3HAC15988-2
3HAC028490-001
6369901-448
6369901-474
6369901-473
6369901-475
3HAC024594-001
3HAC025151-001
3HXD1602-50
3HXD1635-240
YB560103-AS
3HNA006233-001
3HAC024382-001
3HAC023997-001
3HAC021911-001
3HAC6546-1
3HAA1001-88
3HXH1000-516
9982658
3045866
3046975
91108470
500165880