教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

使用QEMU建立Mini2440的模拟环境(6)

来源:网络收集 时间:2026-03-06
导读: 391. - } 392. - } 393. + if (s->kernel) { 394. + image_size = load_image(s->kernel, qemu_get_ram_ptr(0)); 395. + if (image_size > 0) { 396. + if (image_size ~(512-1); 398. + s->cpu->env->regs[15] = S

391. - } 392. - } 393. + if (s->kernel) { 394. + image_size = load_image(s->kernel, qemu_get_ram_ptr(0)); 395. + if (image_size > 0) { 396. + if (image_size & (512 -1)) 397. + image_size = (image_size + 512) & ~(512-1); 398. + s->cpu->env->regs[15] = S3C_RAM_BASE ; 399. + mini2440_printf(\, s->kernel, s->cpu->env->regs[15]); 400. + } 401. + } 402. } 403. 404. /* Typical touchscreen calibration values */ 405. @@ -353,6 +322,11 @@ static struct mini2440_board_s *mini2440_init_common(int ram_size, 406. return s; 407. } 408. 409. 410. static void mini2440_init(ram_addr_t ram_size, 411. const char *boot_device, 412. @@ -371,9 +345,18 @@ static void mini2440_init(ram_addr_t ram_size, 413. mini = mini2440_init_common(ram_size, 414. kernel_filename, cpu_model, sd); 415. 416. mini->nand = nand_init(NAND_MFR_SAMSUNG, 0x76); 417. mini->cpu->nand->reg(mini->cpu->nand, mini->nand); 418. 419. mini2440_reset(mini); 420. } 编译qemu for mini2440

./configure --target-list=arm-softmmu --disable-linux-user;make

安装,或者直接copy arm-softmmu里面的可执行文件也可以。

2. 让ecos增加对mini2440的支持

http://code.google.com/p/redboot-mini2440/ 这个project里面有全部的代码,不过可能用于各种原因并没有完善。

我们获得他的源代码基于ecos 3.0,然后我们根据smdk2410重新创建mini2440的hal 模块

[css] view plaincopy

1. 2. 3. 4. 5. 6. 7. 8. 9. ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/ cdl ChangeLog include misc src ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/src/ hal_diag.c mini2440_misc.c ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/cdl/ hal_arm_arm9_mini2440.cdl ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/include/ hal_diag.h hal_platform_setup.h pkgconf plf_stub.h hal_platform_ints.h memcfg.h plf_io.h s3c2440x.h 10. ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/misc/ 11. mini2440_redboot_RAM.ecm mini2440_redboot_ROMRAM.ecm 12. ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$

3. 针对QEMU的修改

为了能让redboot顺利的运行在qemu上面,我们需要让程序直接跑在sdram上面,但是需要对硬件做必要的初始化。

所以,目前的RAM,ROM,ROMRAM都不太合适,我们加入一个新的启动方式QEMU,相当于ROMRAM方式下面禁用mmu的跳转 [c-sharp] view plaincopy 1. 2. 3. 4. 5. 6. 7. 8. 9. Revision: 3047 Branch: default Author: Ricky Wu 2011-03-01 15:38:16 Committer: Ricky Wu 2011-03-01 15:38:16 Tags: tip Parent: 3046:e7902e8a3e20 (1. remove QEMU start method. 2. add simple nand read funtion) mini2440 redboot can be run on qemu for mini2440 ----- packages/hal/arm/arm9/mini2440/current/cdl/hal_arm_arm9_mini2440.cdl ----- @@ -78,8 +78,8 @@ 10. cdl_component CYG_HAL_STARTUP { 11. display \ 12. flavor data 13. - legal_values { \ \ \ \ } 14. - default_value { \ } 15. + legal_values { \ \ \ \ \ } 16. + default_value { \ } 17. no_define 18. define -file system.h CYG_HAL_STARTUP 19. description \ 20. @@ -328,7 +328,8 @@ 21. no_define 22. calculated { CYG_HAL_STARTUP == \ ? \ : /

23. CYG_HAL_STARTUP == \ ? \ : / 24. - \ } 25. + CYG_HAL_STARTUP == \ ? \ : / 26. + \ } 27. 28. cdl_option CYGHWR_MEMORY_LAYOUT_LDI { 29. display \ 30. @@ -337,7 +338,8 @@ 31. define -file system.h CYGHWR_MEMORY_LAYOUT_LDI 32. calculated {CYG_HAL_STARTUP == \ ? \>\ : / 33. CYG_HAL_STARTUP == \ ? \>\ : / 34. - \ldi>\ } 35. + CYG_HAL_STARTUP == \ ? \am.ldi>\ : / 36. + \i>\ } 37. } 38. 39. cdl_option CYGHWR_MEMORY_LAYOUT_H { 40. @@ -347,7 +349,8 @@ 41. define -file system.h CYGHWR_MEMORY_LAYOUT_H 42. calculated { CYG_HAL_STARTUP == \ ? \\ : / 43. CYG_HAL_STARTUP == \ ? \\ : / 44. - \.h>\ } 45. + CYG_HAL_STARTUP == \ ? \ram.h>\ : / 46. + \>\ } 47. } 48. } 49. 50. @@ -356,7 +359,7 @@ 51. flavor bool 52. default_value 0 53. parent CYGPKG_HAL_ROM_MONITOR 54. - requires { (CYG_HAL_STARTUP == \) || (CYG_HAL_STARTUP == \) } 55. + requires { (CYG_HAL_STARTUP == \) || (CYG_HAL_STARTUP == \) || (CYG_HAL_STARTUP == \) }

56. description \ 57. Enable this option if this program is to be used as a ROM monitor, 58. i.e. applications will be loaded into RAM on the board, and this 59. ----- packages/hal/arm/arm9/mini2440/current/include/hal_platform_setup.h ----- 60. @@ -91,7 +91,7 @@ 61. #endif 62. 63. 64. -#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM) 65. +#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM) || defined(CYG_HAL_STARTUP_QEMU) 66. #define PLATFORM_SETUP1 _platform_setup1 67. #define CYGHWR_HAL_ARM_HAS_MMU 68. #define CYGSEM_HAL_ROM_RESET_USES_JUMP 69. @@ -160,7 +160,7 @@ …… 此处隐藏:4679字,全部文档内容请下载后查看。喜欢就下载吧 ……

使用QEMU建立Mini2440的模拟环境(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/593223.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)