问个弱智的问题
我的硬件平台是PXA270
以前可以用JFLASH烧写EBOOT。NB0,现在我把其中的一个P处理文件修改了,可以烧写.BIN的文件
我用ADS写了一小段的汇编程序,是点灯的
但是烧写进去什么反应都没有
我怀疑是不是在 ADS1.2上设置入口点不对啊 ?
那么这个入口点怎么确定呢
下面付上这段点灯程序,大家帮忙找找问题吧,谢谢啦!
xlli_GPIOREGS_PA_BASE EQU 0x40e00000
xlli_GAFR0_L_offset EQU 0x00000054
xlli_GPDR0_offset EQU 0x0000000c
xlli_GPSR0_offset EQU 0x00000018
xlli_GPCR0_offset EQU 0x00000024
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY
LEDTEST
ldr r0, =xlli_GPIOREGS_PA_BASE ;
ldr r1, =0x0 ;
str r1, [r0, #xlli_GAFR0_L_offset] ;
ldr r1, =0xcfe307e4
str r1, [r0, #xlli_GPDR0_offset] ;
ledloop1
ldr r2, = 0x8604
str r2, [r0,#xlli_GPSR0_offset]
bl delay1
ledloop2
ldr r2, =0x0
str r2, [r0, #xlli_GPCR0_offset]
bl delay2
delay1
ldr r3,=0x1ffff
delay3
sub r3,r3,#1
cmp r3,#0x0
bne delay3
b ledloop2
mov pc,lr
delay2
ldr r3,=0x2ffff
delay4
sub r3,r3,#1
cmp r3,#0x0
bne delay4
b ledloop1
mov pc,lr
END
ADS可以设置的,不过具体的是不是要看MAP文件?
我找到了两个ADS编写的BOOTLOADER
发现这个入口点都是0xa3e00000
我按照4楼的方式添加进去
输入那段汇编代码后,生成一个BIN文件后
烧写到板子上的NORFLASH中
开机运行
什么反应都没有!!!!!
1. LZ, PXA270 上 Physical Address 0xA3E00000 應是 SDRAM. 這跟 nor flash 應是無關吧, 除非 LZ 的 ADS Code 有把 MMU 打開, 並將 NOR flash Physical Address 0x00000000 mapping to 0xA3E00000, 不然是很可能會什麼反應都沒有.
2. 不知 LZ LED 是接到哪一支 GPIO??, GPSR0 設成 0x8604, 但 GPDR0 BIT15 未設成 output, GPCR0 也應設為 0x8604, 如此 BIT15, 10, 9, 2 才會有 TOGGLE 的輸出.
祝好運, 希望 LZ 早日將 PXA270 bootloader 搞定.
Paul, Chao @ Techware
引用: 引用 7 楼 paul_chao 的回复:
1. LZ, PXA270 上 Physical Address 0xA3E00000 應是 SDRAM. 這跟 nor flash 應是無關吧, 除非 LZ 的 ADS Code 有把 MMU 打開, 並將 NOR flash Physical Address 0x00000000 mapping to 0xA3E00000, 不然是很可能會什麼反應都沒有.
2. 不知 LZ LED 是接到哪一支 GPIO??, GPSR0 設成 0x8604, 但 GPDR0 BIT15 未設成 output, GPCR0 也應設為 0x8604, 如此 BIT15, 10, 9, 2 才會有 TOGGLE 的輸出.
祝好運, 希望 LZ 早日將 P…
1、我要怎么做才能让这段代码可以正常运行起来呢??
实在不想打开MMU或者做虚拟映射了......
而且我没走CE的系统,只是把270当单片机用啊....
天啊!!我头疼
2、LED用的是GPIO9和GPIO10
1. PXA270 是個複雜的 SOC, 就算要當成 Single Chip 來用, 也要把該設的設好.
2. 這程式把 GPCR 的改掉, 應該會動才是.
xlli_GPIOREGS_PA_BASE EQU 0x40e00000
xlli_GAFR0_L_offset EQU 0x00000054
xlli_GPDR0_offset EQU 0x0000000c
xlli_GPSR0_offset EQU 0x00000018
xlli_GPCR0_offset EQU 0x00000024
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY
LEDTEST
ldr r0, =xlli_GPIOREGS_PA_BASE ;
ldr r1, =0x0 ;
str r1, [r0, #xlli_GAFR0_L_offset] ;
ldr r1, =0xcfe307e4
str r1, [r0, #xlli_GPDR0_offset] ;
ledloop1
ldr r2, =((1 :SHL: 9) :OR: (1 :SHL: 10))
str r2, [r0,#xlli_GPSR0_offset]
bl delay1
ledloop2
ldr r2, =((1 :SHL: 9) :OR: (1 :SHL: 10))
str r2, [r0, #xlli_GPCR0_offset]
bl delay2
b ledloop1
delay1
ldr r3,=0x1ff
delay3
subs r3,r3,#1
bne delay3
mov pc,lr
delay2
ldr r3,=0x2ff
delay4
subs r3,r3,#1
bne delay4
mov pc,lr
END
Paul, Chao @ Techware
0xA3E00000是SDRAM起始物理地址,使用这个作为入口的含义是:将sdram初始化并启用,程序下载到sdram并在sdram里面运行。
这个跟MMU倒没什么关系。
sdram比nor是快,不过在测试中不用sdram也无所谓的。270的nor是0x0开始的,改成0x0试试。
既然用ADS,那自然有debug模式了,你就跟踪看有没有运行。
270的GPIO9、10是有特殊作用的:输出经过buffer(缓冲)的32KHz和13MHz波形!只是配置GPIO功能是不够的,必须禁止掉这两个功能,寄存器忘了,只要在spec中搜索GPIO9,就能搜到。
正解如googleman,googleman强人,拜读了你不少文章