看到很多朋友还不知道怎么进行s3c6410的裸机开发,最近在弄这个东西,所以写点东西给需要的朋友。相信弄过裸机跑程序的朋友都知道,需要用ADS来开发。但是需要仿真器,而6410的仿真器不是一般的贵,而且弄起来非常之麻烦。

 
  而在弄了一星期的SD启动6410之后,感觉这个SD卡启动非常好,买不起仿真器的朋友有福了,不用擦除flash,直接将文件下载到SDRAM中运行,然后使用printf进行调试不是即省钱又方便的办法吗?如果有人说我要看寄存器r0,r1之类的东东呢?那我只能说请你先回去学两星期ARM汇编在来吧,用ADS1.2而且不需要任何硬件就可以。
 
  既然知道了用SD启动的方式将文件下载到SDRAM中使用printf调试,那么开发工具用什么呢?很简单GCC啊,然后去网上找samsung提供的1.1.6版本的U-BOOT,然后进行简单的修改即可,这个三星版本的U-BOOT提供了从SD卡启动的全部代码,基本上不用修改就可以使用。如果不想搞得太复杂,可以在lib_arm/board.c代码中将进入C语言第二阶段的入口改为自己的就行了,但是话又说回来,使用6410不用操作系统那不是大才小用了吗?接入来将介绍如何使用SD启动6410,并详细说明将数据写到SD卡的什么地方。
在使用SD卡更新板子的boot时,请先确认已经使用Windex工具将u-boot.bin文件写入到SD卡中,关于使用Windex工具写SD卡在另一个文档中介绍,这里只简单介绍如何使用SD卡更新板子的bootloader。
1,板子在断电的情况下,将小板上的BOOT_CONFIG中的跳线开关1,2,3个拨到ON端
2,插入SD卡,板子上电,等待大概3秒钟后,板子上的LED灯会不停的闪耀,表示boot已经成功烧写到nandflash中;如果没有看到这个现象,将板子重新上电;如果重试几次后都没有看到这个现象,请确认u-boot.bin是否已经正确烧写到了SD卡中正确的位置。
3,更新成功之后,板子的灯会不停的闪耀,此时就可以断电并从nandflash启动了,将小板上的BOOT_CONFIG中的跳线开关1,2拨到ON端,开关3拨到相反的一端就是从nandflash启动,上电后系统会自动下载服务器上的kernel, ramdisk, 文件系统。
压缩包里的文件为图片
 
文件:SD卡启动6410.rar
大小:2665KB
下载:下载
   
三星提供的关于各种启动模式的设置,包含了从SD卡启动相关
文件:CHxx_IROM_ApplicationNote_Rev1.pdf
大小:227KB
下载:下载
 
使用Windex工具将u-boot.bin二进制文件写入到SD卡中:
1,将WinHex-v15.1sr-8H.rar直接解压到到当前文件夹中,然后进入WinHex15.1SR-8文件夹,双击WinHex.exe打开工具,然后打开你的u-boot.bin文件,这里假设为u-boot_insnand.bin,如下图:
 
图片上传不了,请查看附件,图片序号可能会有点乱,但应该不成问题的

然后单击文件的起始位置,如下图:
用鼠标点击上图中的13后,13的背景色会变色
2,按alt+1设置写入数据的起始位置,将文件拉到最后的位置,如下图:

然后用鼠标点击最的一个数字,如下图:

点击上图中最右边的数字E5,设置写入数据的结束位置,之后这之间的数据的背景色会变色。
3,复制要写入的数据,按下ctrl+c进行复制
4,将SD卡插入读卡器中,然后在插入电脑的USB口,然后按下F9打开设备,第一次打开的时间稍长,如下图:

注意一定要是图中Physical Media下的阴影部分的设备,然后点OK打开设备,如下图:

注意 :目前板子上的SD卡启动只支持2G的SD卡,而这时只介绍2G的SD卡的写入情况,请确认所使用的是否是2G的SD卡,而且卡上不能印有SDHC的字样,SDHC是高速的SD卡,这里也不支持。
5,点软件最下栏的Offset字样,跳到所要写入的SD卡的具体位置,如下图:

图中设置的偏移是错误的,正确的应该为3961678块,转换成地址为:1977179136字节, 然后点击OK,就会跳到设备中的具体位置:
上图为写入后的数据所在的位置,请检查最后写入数据后的这个位置是否与上图的一样。
写入SD卡的偏移地址计算公式:偏移=总扇区数-二进制文件大小-2,总扇区数为软件最左下角处读出的数,相同的SD卡读出的总扇区可能会不同,此处为3862528块,二进制文件即为制作出来的专门用于写入SD的.bin文件,此处为u-boot_insnand.bin,关于这个特定的二进制文件的制作将在后面讲到,最后的2为规定的大小不用关心。注意图中所计算的偏移都是以十进制计算的,如果为十六进制,则要重新计算。在offset下的地址上点击鼠标可以进行十进制与十六进制的切换。单位换算:1K=2块=1024字节, 1块=512字节
6,按下ctrl+b将数据写入SD卡,其中弹的窗口按下OK即可,然后将鼠标放到如下图的文件中,如下图
在Removable medium 1中单击右键,会弹出一个close的字样,点击后会弹出如下窗口:
 
点击Yes后会在弹出一个窗口,在点击Yes后,数据就写入到了SD卡中了,如下图:

7,与SD卡特定的二进制文件的制作,使用提供的脚本文件cut-boot.sh, 将编译好的u-boot.bin文件与cut-boot.sh文件拷贝到一个目录下,然后在linux的终端里输入: sh cut-boot.sh就会在该目录下生成制作好的二进制文件,名为:u-boot_mmc.bin,名字可以在脚本中修改。脚本内容如下:
cat u-boot.bin >> temp
cat u-boot.bin >> temp
split -b 384k temp
mv xaa u-boot_384k.bin
rm x*
split -b 8k u-boot.bin
mv xaa u-boot_8k.bin
cat xab >> u-boot_env.bin
cat xab >> u-boot_env.bin
cat xab >> u-boot_env.bin
cat xab >> u-boot_env.bin
rm x*
cat u-boot_384k.bin >> u-boot_mmc.bin
cat u-boot_env.bin >> u-boot_mmc.bin
cat u-boot_8k.bin >> u-boot_mmc.bin
注意:这里我使用的384K的文件,因为我的u-boot.bin大于了256K,为了方便计算所以使用了256+128K,如果u-boot.bin大小没有超过256K,而也不想使用这里的384K,将上面的脚本中的384改为256,同时在movi.h中修改相应的数据。