手里只有一块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回车,如下图所示:
3、OK6410的SD卡启动
OK6410上电后会把SD卡固定位置的固定大小的内容复制到内部SRAM中执行,复制完成之后,从内部SRAM开始执行代码,关于SD卡的详细启动读者可以参考资料<<S3C6410_Internal_ROM_Booting.pdf>>
OK6410启动流程入下图所示:
4、SD卡写入位置
编写好的代码如何写入到SD卡中以及写到SD卡的什么位置?从上图中可以得知,就是将代码写入到BL1的存储位置即可,则硬件上电将会把BL1拷贝到
内部RAM(stepping stone)执行。查看参考资料<<S3C6410_Internal_ROM_Booting.pdf>>,如下图所示:
从上图可以看出: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灯点亮程序为例,如下图所示:
6、设置OK6410启动方式
制作好的 SD卡插入开发板 SD的插槽。接通电源
拨码开关设置为 SD卡启动。如下图所示:
结语:代码在SRAM中执行,并且led灯点亮。