S3C6410移植日记系列

发布时间:2024-09-18  

    现在发布的是si版本,是以单片机模式运行的,S3C6410这样强劲的cpu,运行si版本,就作为高速单片机用了,所有地址都是按照物理地址一一对应映射。cpu的状态也没有区分内核态和用户态。
1、中断引擎最初的部分代码在IRQ态(还没决定是否使用FIQ)。
2、中断引擎的大部分以及用户ISR运行在SVC态。
3、所有其他代码运行在SYS态。

    移植碰到的第一个问题就是烧录代码到flash的问题,由于廉价的jtag烧录器不支持arm11,我们不能要求用户必须拥有昂贵的仿真烧录工具才能够在idea6410上使用djyos,这样不利于用户使用。

    我的第一个目标,就是弄清楚怎么下载程序的问题,也就是把一个最简单的闪灯程序运行起来,写了几行代码,如下:
    ldr     r0,=0x7f008820
    ldr     r1,=0x1111
    str     r1,[r0]
    ldr     r0,=0x7f008824
    ldr     r1,[r0]
    bic     r2,r1,#3
    orr     r2,r2,#0xc
    bic     r3,r1,#0xc
    orr     r3,r3,#3
nn:
    str     r2,[r0]
    ldr     r4,=5000000
delay1:
    sub     r4,r4,#1
    cmp     r4,#0
    bne     delay1
    str     r3,[r0]
    ldr     r4,=5000000
delay2:
    sub     r4,r4,#1
    cmp     r4,#0
    bne     delay2
    b       nn


    6410的手册上说,可以从nandflash、onenand、SD卡启动,没有专用的烧录工具的情况下,只有SD卡启动是可以考虑的。手册上看到,SD卡启动,实际上是先执行片内IROM中的一段程序,该程序从SD卡中读取代码,写到stepping stone中,stepping stone是位于0x0c000000、size为8K的片内内存,代码写入stepping stone后,跳到0x0c000000处继续执行程序。那么,要实现从SD卡启动,就必须弄清楚:
1、8K的代码保存在SD卡的什么位置。
2、代码以什么格式存储。

    为弄清楚上述问题,依例http://www.djyos.com/download/sdboot6410.zip

6410的sdbootloader完成了

 sdbootloader说明:
1、用winhex工具把boot_rom.bin写入SD卡,地址:SD卡末地址-9216。
2、把开发板的拨码开关拨到从SD卡启动,上电即可。
2、打开超级终端,用xmodem协议下载程序,保存到dram中。
3、把下载的代码写入到norflash。
4、把开发板的拨码开关拨到从norflash启动,复位或重新上电即可。
5、省去了xmodem帧格式检查、校验和检查。

    但凡开发操作系统,无论是PC、服务器,还是嵌入式操作系统,第一个要解决的就是启动文件的存储问题。无论什么cpu,上电或者复位后,都会从指定的存储位置读取第一条指令予以执行,我们把这个地址成为启动向量,有些cpu可以通过跳线设置不同的启动向量地址。我们熟悉的PC,就是把bios烧录到启动向量处,再由bios逐步引导启动更高级的操作系统,比如windows、linux等。
    在嵌入式行业,以linux为例,linux映像可以通过网口或者其他通信口下载,但你拿到裸机的时候,必须先想办法把uboot或者vivi或者其他bootloader烧录到flash中。djyos也不例外,不同的是,现在发布的si版本的djyos,是没有单独的bootloader的,而是把bootloader的角色集成在可执行影像中了,所以,需要像烧录uboot那样,烧录整个djyos影像。
    在s3c6410之前,djyos发布了arm7(44b0)和arm9(2410和2440)两个版本,得益于廉价的arm7和arm9仿真烧录器,比如hjtag,arm这两个版本是通过hjtag或者jlink或其他工具直接烧录到norflash上的。但s3c6410是arm11的核,这些廉价工具不支持arm11,支持arm11的烧录工具都在数千元以上,这样势必影响大家使用djyos。要让6410执行djyos,必须解决在没有专用烧录工具的情况下,把djyos烧录到启动设备上的问题。
    6410一共支持4种启动设备:norflash、nandflash、SD卡、modem,其中norflash和nandflash必须使用专用烧录工具,modem则需要了解其通信协议,编写相应的PC端应用程序,相比之下,SD卡最为简单,可以用普通的读卡器+winhex工具就可以完成写入。但有一个限制,就是6410启动时只从SD卡中读取8K代码到内部ram中(6410手册第二章说4K,第八章说8K,实测是8K)。读入代码后,程序就跳转到内部ram中执行,这8K程序,只能做一个简易bootloader,用这个bootloader去加载整个操作系统,这时候,就有两种选择:
1、把程序写到SD卡的其他地方,   但这种方法不现实。SD卡是用nandflash做的, 必然要做ECC校验,那么把代码写入SD卡时,要么用文件系统,但8K代码根本做不了文件系统;要么在PC端用支持ECC的专用写卡工具,可惜没有找到。
2、用串口下载,这是传统方法,PC端的工具很多,最通用的是超级终端了。
    我们选择了超级终端,xmodem协议下载。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>