文件名称:3C2440 ARM裸机 MMU代码(有bug)
文件大小:18KB
文件格式:ZIP
更新时间:2015-07-28 16:07:50
3C2440 ARM裸机 MMU 代码
发在csdn上的贴:http://topic.csdn.net/u/20120707/21/52fd37a8-55c9-4ae7-b151-84d16dfa232b.html?08264980597887188 我通过修改 韦东山《嵌入式LINUX应用开发完全手册》关于MMU那一张的代码,想在ADS环境下,裸跑MMU虚拟地址点灯,但没有成功,不知道错在哪,请高手指点。。。 思路是这样: 在韦东山书中: 1. 原来在书中用的是GNU下的编译环境,汇编语法不同于ADS环境下。 2. 书中程序是从NAND flash启动,通过代码实现a.初始化SDRAM。b.复制代码到SDRAM的物理地址0X30000000处。再设置页表,启动mmu,重设栈指针,跳转到0xB0004000,点灯。 我的s3c2440+ads环境下: 针对第一点,我修改了原来的代码。但有两个地方不是太明白。 第一个是,关于c内嵌汇编代码,有一句:mov r4, %0 不太明白 %0 是什么意思。看网上有人说,%0 实质是等于 r4, #0x30000000 不知道对不对。为什么是这样呢?! 第二个是,关于内嵌汇编代码的最后两句: : /* 无输出 */ : "r" (ttb) ); 不明白是什么意思。只知道把最后一句的 ");" 改成 "}"。 因为 __asm__(); 的语法结构在ads中编译不过,所 以我改成了 __asm {} 的形式。完整的代码再后面。 针对第二点,我用的3c2440+ads环境,从nor flash启动,代码直接下载到板子的SDRAM 0x30000000处。所以省去了这两步。
【文件预览】:
mmu0707
----mmu0707.mcp(43KB)
----mmu0707.bin(1KB)
----init.c(7KB)
----leds.c(1KB)
----head.S(1KB)
----mmu0707_Data()
--------CWSettingsWindows.stg(3KB)
--------mmu0707()
----readme.txt(1KB)