uint32_t image_size;
- /*
- * Normally we would load 4 KB of nand to SRAM and jump there, but
- * it is not working perfectly as expected, so we cheat and load
- * it from nand directly relocated to 0x33f80000 and jump there
- */
- if (mini2440_load_from_nand(s->nand, 0, S3C_RAM_BASE | 0x03f80000, 256*1024)> 0) {
- mini2440_printf('loaded default u-boot from NAND/n');
- s->cpu->env->regs[15] = S3C_RAM_BASE | 0x03f80000; /* start address, u-boot already relocated *
- }
-#if 0 && defined(LATER)
- if (mini2440_load_from_nand(s->nand, 0, S3C_SRAM_BASE_NANDBOOT, S3C_SRAM_SIZE) > 0) {
- s->cpu->env->regs[15] = S3C_SRAM_BASE_NANDBOOT; /* start address, u-boot relocating code */
- mini2440_printf('4KB SteppingStone loaded from NAND/n');
- }
-#endif
- /*
- * if a u--boot is available as a file, we always use it
- */
- {
- image_size = load_image('mini2440/u-boot.bin', qemu_get_ram_ptr(0x03f80000));
- if (image_size < 0)
- image_size = load_image('u-boot.bin', qemu_get_ram_ptr(0x03f80000));
- if (image_size > 0) {
- if (image_size & (512 -1)) /* round size to a NAND block size */
- image_size = (image_size + 512) & ~(512-1);
- mini2440_printf('loaded override u-boot (size %x)/n', image_size);
- s->cpu->env->regs[15] = S3C_RAM_BASE | 0x03f80000; /* start address, u-boot already reloca
- }
- }
- /*
- * if a kernel was explicitly specified, we load it too
- */
- if (s->kernel) {
- image_size = load_image(s->kernel, qemu_get_ram_ptr(0x02000000));
- if (image_size > 0) {
- if (image_size & (512 -1)) /* round size to a NAND block size */
- image_size = (image_size + 512) & ~(512-1);
- mini2440_printf('loaded %s (size %x)/n', s->kernel, image_size);
- }
- }
+ if (s->kernel) {
+ image_size = load_image(s->kernel, qemu_get_ram_ptr(0));
+ if (image_size > 0) {
+ if (image_size & (512 -1))
+ image_size = (image_size + 512) & ~(512-1);
+ s->cpu->env->regs[15] = S3C_RAM_BASE ;
+ mini2440_printf('loaded kernel %s at %p/n', s->kernel, s->cpu->env->regs[15]);
+ }
+ }
}
/* Typical touchscreen calibration values */
@@ -353,6 +322,11 @@ static struct mini2440_board_s *mini2440_init_common(int ram_size,
return s;
}
static void mini2440_init(ram_addr_t ram_size,
const char *boot_device,
@@ -371,9 +345,18 @@ static void mini2440_init(ram_addr_t ram_size,
mini = mini2440_init_common(ram_size,
kernel_filename, cpu_model, sd);
mini->nand = nand_init(NAND_MFR_SAMSUNG, 0x76);
mini->cpu->nand->reg(mini->cpu->nand, mini->nand);
mini2440_reset(mini);
}
编译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 模块
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
ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$ ls mini2440/current/misc/
mini2440_redboot_RAM.ecm mini2440_redboot_ROMRAM.ecm
ricky@ricky-laptop:/opt/ecos/ecos-hg/packages/hal/arm/arm9$
3. 针对QEMU的修改
为了能让redboot顺利的运行在qemu上面,我们需要让程序直接跑在sdram上面,但是需要对硬件做必要的初始化。
所以,目前的RAM,ROM,ROMRAM都不太合适,我们加入一个新的启动方式QEMU,相当于ROMRAM方式下面禁用mmu的跳转
上一篇:ecos on QEMU for mini2440 编译方法
下一篇:minigui1.6移植到mini2440
推荐阅读最新更新时间:2024-11-17 02:22
设计资源 培训 开发板 精华推荐
- LT1308ACS8 SEPIC(单端初级电感转换器)的典型应用电路将 3V 至 10V 输入转换为 5V/500mA 稳压输出
- LT1172IS8、5V/1.25A 正向转换器的典型应用
- 具有关断功能的 LT1129IQ-3.3 5V 低压差稳压器电源的典型应用电路
- LM217M 带保护二极管的中等电流 1.2 至 37V 稳压器的典型应用
- MC34074ADR2G 有源高 Q 陷波滤波器运算放大器的典型应用
- AD9238BCP-40EBZ,用于 AD9238、2 通道、10 位、40 MSPS 模数转换器的评估板
- PCF2129T 工业 TCXO RTC 的计时、CLKOUT 应用
- LTC4162EUFD-FFS 9V 至 35V 2 节 3.2A 充电器的典型应用,具有 PowerPath 和 2A 输入限制
- MCP16331 高压输入集成开关降压稳压器电路(12V 输入、2V 输出、500 mA)下的典型应用
- LT1085CT-12、12V/7.5A 并联低压差稳压器的典型应用电路
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- 悦读 TI DEYISUPPORT 中国工程师精彩博文,答题赢好礼喽!
- 【答题有奖】Altera Cyclone V 开发板全体验之初识 & 评估Cyclone V !
- 有奖直播|ADI在可穿戴产品中的生命体征监测解决方案
- 有奖直播|TI 使用 DLP® 微型投影技术设计增强现实智能眼镜
- 看是德科技5G精彩专题,让你了解更多关于5G的那些事~ 下载赢好礼!
- 直播已结束【解锁 TI Sitara AM2x MCU 在电机驱动中的新可能】
- 【TI 嵌入式研讨会集锦】小站添加了很多新内容,欢迎提货!
- 看这里!发表个人原创就有机会获得E金币啦~~
- 有奖直播报名:TI DLP®技术在汽车行业的创新应用——增强型抬头显示