手里只有一块OK6410开发板,一张8G的SD卡,没有相关的JTAG调试器,也没有集成开发环境可用,那如何进行裸机开发呢?查询开发的手册可知,6410芯片支持从SD卡启动,因此裸机开发就从SD卡开始。

1、开发环境的搭建

  首先搭建虚拟机平台,安装Linux开发环境centos6.5,安装过程这里不再赘述。

2、交叉编译环境的安装

  进入centos6.5,在/home目录下新建gnutools目录,将arm-linux-gcc-4.3.2.tgz(开发板的所带的资料)文件拷贝到 centos/home/gnutools目录下。在 Centos6.5中新建一个终端,输入下面的命令安装交叉编译器:
#cd /home/gnutools (进入/gnutools目录)
#tar zxvf arm-linux-gcc-4.3.2.tgz 
编译器软件解压到当前文件夹,把交叉编译器路径添加到系统环境变量中,以后可以直接在终端窗口中输入 arm-linx-gcc令来编译程序。
在终端中执行:vi .bashrc
添加/home/guntools/usr/local/arm/4.3.2/bin到$PATH变量
保存,退出。
重新启动系统,在终端里面执行 arm-linux-gcc回车,如下图所示:

S3C6410基于SD卡的裸机开发_第1张图片

3、OK6410的SD卡启动

  OK6410上电后会把SD卡固定位置的固定大小的内容复制到内部SRAM中执行,复制完成之后,从内部SRAM开始执行代码,关于SD卡的详细启动读者可以参考资料<>

  OK6410启动流程入下图所示:

S3C6410基于SD卡的裸机开发_第2张图片

4、SD卡写入位置

  编写好的代码如何写入到SD卡中以及写到SD卡的什么位置?从上图中可以得知,就是将代码写入到BL1的存储位置即可,则硬件上电将会把BL1拷贝到

内部RAM(stepping stone)执行。查看参考资料<>,如下图所示:

S3C6410基于SD卡的裸机开发_第3张图片

从上图可以看出:SDHC卡的 BL1是在:Total_sector-Reserved-sigature-BL1=倒数第1042个扇区中

5、代码写入BL1位置

  插入SD卡,进入Linux环境输入fdisk -l /dev/sdb,如下图所示:

 计算BL1的位置:BL1=Total_sector-Reserved-sigature-BL1=7744782336/512-1042=15125486

 然后将代码写到SD卡,这里以led灯点亮程序为例,如下图所示:

 wKiom1b74WjTCdiTAADlE-3iwMo748.jpg

6、设置OK6410启动方式

 制作好的 SD卡插入开发板 SD的插槽。接通电源

  拨码开关设置为 SD卡启动。如下图所示:

 

结语:代码在SRAM中执行,并且led灯点亮。