以下是引用lisim51在2004-5-11 15:03:00的发言:
从那里可以找到内核的压缩和解压缩的源码?找了半天,累死了。现在还有twentyone 这么好的人啊,我们科技兴国的目标可以实现了!呵呵
压缩的话,用linux下的gzip就行了,要在bootloader里解压缩的话,可以到bios的源代码里找gunzip.c 和 gunzip.h,我上载了,你下载吧:
[upload=rar]viewFile.asp?ID=3036[/upload]
ha以下是引用ygqing_fen在2004-5-11 22:13:00的发言:
引用:因为kernel[]这个数组是一个全局变量,所以肯定是被放到RW段去了。所以,在remap后,先把RW段拷贝到RW_BASE的位置上去,设置好堆栈指针,就可以调用loadkernel函数了,这个函数会把knerle[]这个数组(其实就是内核image.ram)拷贝到0x8000的位置上去,然后跳转过去就可以启动了。 这就是说kernel[]这个内核是放在RW里面了,那么在flash里面放的就只有RO和RW两部分了,而RO的任务就是完成系统初始化,REMAP,把RW的内容拷贝到SDRAM中,最后跳到loadkernel函数中去, 是这样的吗?谢谢! 过程基本是这样的
[align=right][color=#000066][此贴子已经被作者于2004-5-11 22:27:45编辑过][/color][/align]
引用:因为kernel[]这个数组是一个全局变量,所以肯定是被放到RW段去了。所以,在remap后,先把RW段拷贝到RW_BASE的位置上去,设置好堆栈指针,就可以调用loadkernel函数了,这个函数会把knerle[]这个数组(其实就是内核image.ram)拷贝到0x8000的位置上去,然后跳转过去就可以启动了。 这就是说kernel[]这个内核是放在RW里面了,那么在flash里面放的就只有RO和RW两部分了,而RO的任务就是完成系统初始化,REMAP,把RW的内容拷贝到SDRAM中,最后跳到loadkernel函数中去, 是这样的吗?谢谢! 过程基本是这样的
[align=right][color=#000066][此贴子已经被作者于2004-5-11 22:27:45编辑过][/color][/align]
以下是引用gaochaor在2004-5-11 21:53:00的发言:
image.rom可以自己重新映射RAM到0X00地址吗?它怎么知道板子的RAM是多大,Flash是多大呢? 是不是需要自己在编译时配置呢? 还有一问:既然image.rom可以直接用,那么用自己写的Bootloader+image.ram的方式是处于什么目的呢? 呵呵手头没有板子,只能多问了 FLASH, SDRAM的大小都是要预先定义好的。 其实自己尝试写一个bootloader也是一个学习过程。 image.rom其实包含了一个bootloader叫bios(专门为4510开发的),这个bootloader是linux_tao大侠写的,功能很强大。
image.rom可以自己重新映射RAM到0X00地址吗?它怎么知道板子的RAM是多大,Flash是多大呢? 是不是需要自己在编译时配置呢? 还有一问:既然image.rom可以直接用,那么用自己写的Bootloader+image.ram的方式是处于什么目的呢? 呵呵手头没有板子,只能多问了 FLASH, SDRAM的大小都是要预先定义好的。 其实自己尝试写一个bootloader也是一个学习过程。 image.rom其实包含了一个bootloader叫bios(专门为4510开发的),这个bootloader是linux_tao大侠写的,功能很强大。
以下是引用ygqing_fen在2004-5-12 14:29:00的发言:
因为我现在还没有看程序,所以问的问题可能初级,请大家莫怪。因为在SDRAM的0x0000处应该放中断向量才是,肯定放的不是BOOTLOADER的的R0部分,那么这一部分又放到哪儿去了呢?我用的是sc44b0的开发板,它是不支持remap的,所以要把中断向量放在flash的起始地址,这是不是意味着我在flash的0地址应放一条跳转语句,跳到BOOTLOADER的的R0部分?
系统起来以后在SDRAM的地址0x0处放的应该是中断向量,这是由操作系统完成的,所以在bootloader里不用管它。其实在把image.ram装载到0x8000后,bootloader就没有作用了,所以bootloader RO段占用的地方会被内核覆盖掉了。
因为我现在还没有看程序,所以问的问题可能初级,请大家莫怪。因为在SDRAM的0x0000处应该放中断向量才是,肯定放的不是BOOTLOADER的的R0部分,那么这一部分又放到哪儿去了呢?我用的是sc44b0的开发板,它是不支持remap的,所以要把中断向量放在flash的起始地址,这是不是意味着我在flash的0地址应放一条跳转语句,跳到BOOTLOADER的的R0部分?
系统起来以后在SDRAM的地址0x0处放的应该是中断向量,这是由操作系统完成的,所以在bootloader里不用管它。其实在把image.ram装载到0x8000后,bootloader就没有作用了,所以bootloader RO段占用的地方会被内核覆盖掉了。
以下是引用lisim51在2004-5-12 17:05:00的发言:
问一个不好意思地问题:我看part4部分 ;****************************************************************
;Initalize the memory as followa:
; FLASH @ 0 ~ 2 M
; SDRAM @ 2 ~ 18M
; ;/*************************************************************************/
; /* SYSTEM MEMORY CONTROL REGISTER EQU TABLES */
; /*************************************************************************/ ;***************Init***************
;rEXTDBWTH EQU 0x00003001
;rROMCON0 EQU 0x02000060
;rROMCON1 EQU 0x60
;rROMCON2 EQU 0x60
;rROMCON3 EQU 0x60
;rROMCON4 EQU 0x60
;rROMCON5 EQU 0x60
;rSDRAMCON0 EQU 0x12008380
;rSDRAMCON1 EQU 0x00
;rSDRAMCON2 EQU 0x00
;rSDRAMCON3 EQU 0x00
;rSREFEXTCON EQU 0xCE278360 LDR r1, =rEXTDBWTH ;EXTDBWTH
LDR r2, =rROMCON0 ;ROMCON0 @ 0M ~ 2M
LDR r3, =rROMCON1 ;ROMCON1 @ DISABLED
LDR r4, =rROMCON2 ;ROMCON1 @ DISABLED
LDR r5, =rROMCON3 ;ROMCON1 @ DISABLED
LDR r6, =rROMCON4 ;ROMCON1 @ DISABLED
LDR r7, =rROMCON5 ;ROMCON1 @ DISABLED
LDR r8, =rSDRAMCON0 ;SDRAMCON0 @ 2M ~ 18M
LDR r9, =rSDRAMCON1 ;SDRAMCON1 @ DISABLED
LDR r10,=rSDRAMCON2 ;SDRAMCON2 @ DISABLED
LDR r11,=rSDRAMCON3 ;SDRAMCON3 @ DISABLED
LDR r12,=rSREFEXTCON
LDR r0, =ARM7_EXTDBWTH //最后这两句话怎么理解阿? STMIA r0, {r1-r12} //EXTDBWTH是个寄存器,怎么能把R1-R12写进去 对寄存器ROMCON0写入0x02000060,其中[19:10]该设置值左移16位即为FLASH的起始地质。这一共9位,怎么左移16位?怎么确定REMAP后的地质? 问题比较初级,耽误了您的时间?谢谢! STMIA r0, {r1-r12} STMIA是批量存储指令,通过一条指令可以实现多过存储。
问一个不好意思地问题:我看part4部分 ;****************************************************************
;Initalize the memory as followa:
; FLASH @ 0 ~ 2 M
; SDRAM @ 2 ~ 18M
; ;/*************************************************************************/
; /* SYSTEM MEMORY CONTROL REGISTER EQU TABLES */
; /*************************************************************************/ ;***************Init***************
;rEXTDBWTH EQU 0x00003001
;rROMCON0 EQU 0x02000060
;rROMCON1 EQU 0x60
;rROMCON2 EQU 0x60
;rROMCON3 EQU 0x60
;rROMCON4 EQU 0x60
;rROMCON5 EQU 0x60
;rSDRAMCON0 EQU 0x12008380
;rSDRAMCON1 EQU 0x00
;rSDRAMCON2 EQU 0x00
;rSDRAMCON3 EQU 0x00
;rSREFEXTCON EQU 0xCE278360 LDR r1, =rEXTDBWTH ;EXTDBWTH
LDR r2, =rROMCON0 ;ROMCON0 @ 0M ~ 2M
LDR r3, =rROMCON1 ;ROMCON1 @ DISABLED
LDR r4, =rROMCON2 ;ROMCON1 @ DISABLED
LDR r5, =rROMCON3 ;ROMCON1 @ DISABLED
LDR r6, =rROMCON4 ;ROMCON1 @ DISABLED
LDR r7, =rROMCON5 ;ROMCON1 @ DISABLED
LDR r8, =rSDRAMCON0 ;SDRAMCON0 @ 2M ~ 18M
LDR r9, =rSDRAMCON1 ;SDRAMCON1 @ DISABLED
LDR r10,=rSDRAMCON2 ;SDRAMCON2 @ DISABLED
LDR r11,=rSDRAMCON3 ;SDRAMCON3 @ DISABLED
LDR r12,=rSREFEXTCON
LDR r0, =ARM7_EXTDBWTH //最后这两句话怎么理解阿? STMIA r0, {r1-r12} //EXTDBWTH是个寄存器,怎么能把R1-R12写进去 对寄存器ROMCON0写入0x02000060,其中[19:10]该设置值左移16位即为FLASH的起始地质。这一共9位,怎么左移16位?怎么确定REMAP后的地质? 问题比较初级,耽误了您的时间?谢谢! STMIA r0, {r1-r12} STMIA是批量存储指令,通过一条指令可以实现多过存储。
以下是引用lisim51在2004-5-12 17:14:00的发言:
我知道了,EXTDBWTH 和后边的寄存器地置是连着的,08,0C,10,14,,,,,,, 我现在还有点不明白的是 对寄存器ROMCON0写入0x02000060,其中[19:10]该设置值左移16位即为FLASH的起始地质。这一共9位,怎么左移16位?怎么确定REMAP后的地质? 另外,我没找到SREFEXTCON这个寄存器,只有REFEXTCON这个寄存器。 我看得是ARM应用系统开发详解--基于S3C4510的系统设计
不好意思,是我写错了,只有REFEXTCON这个寄存器[em04]
我知道了,EXTDBWTH 和后边的寄存器地置是连着的,08,0C,10,14,,,,,,, 我现在还有点不明白的是 对寄存器ROMCON0写入0x02000060,其中[19:10]该设置值左移16位即为FLASH的起始地质。这一共9位,怎么左移16位?怎么确定REMAP后的地质? 另外,我没找到SREFEXTCON这个寄存器,只有REFEXTCON这个寄存器。 我看得是ARM应用系统开发详解--基于S3C4510的系统设计
不好意思,是我写错了,只有REFEXTCON这个寄存器[em04]
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 | |
【分享评测,赢取加热台】使用8051单片机驱动WS2812被打赏40分 |