【Nano Pi 2】-15 裸机开发(一)准备篇
——cztqwan
转载请注明ICKey!
本帖讲一下Nano Pi2的裸机开发。在进行裸机开发之前,有一些准备工作需要做,本帖先来介绍Nano Pi2裸机开发需要做的准备工作。
Nano Pi2使用的是三星S5P4418处理器,S5P4418可以配置为NAND FLASH、eMMC、SD卡等启动方式,就像电脑可以从硬盘或者光驱启动一样。
Nano Pi2硬件设置为SD卡启动。它的启动流程如下:
上电后,S5P4418会先执行芯片内部ROM中的一段代码,该代码会设置芯片的初始运行环境(比如关闭看门狗、关中断、关 MMU、设置堆栈等),然后根据BOOT引脚的电平确定启动设备,接下来从启动设备(Nano Pi2硬件设置为SD卡启动,所以启动设备为SD卡)中一段由三星提供的二进制代码(2ndboot)到RAM中执行,2ndboot完毕后会再从SD卡中把uboot加载到外部RAM中来执行。uboot一般用来引导操作系统,如果进行裸机开发,则用裸机代码代替uboot即可。
在芯片内部ROM 上的那段代码,称为iROM。
iROM是芯片厂家事先烧写在芯片上的,无源码。
2ndboot 是三星提供的,无源码。
这几段代码在TF卡中的具体位置:
Nsih.bin是对芯片一些简单寄存器的配制,包括(启动方式,PLL,DDR),也是由三星提供的。由于TF卡一个块为512字节,所以Block64的地址为:0x8200。
前面已经分析了S5P4418的启动过程,知道了要运行裸机代码,必须要把裸机代码烧写到原来u-boot的位置,而之前的2ndboot和Nsih都要保留。这就需要用到winhex软件了,WinHex是一款非常不错的16进制编辑器,它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。在这里,使用winhex把2ndboot和Nsih拷贝到TF相应的位置。
首先把TF完全格式化,然后以管理员模式打开winhex软件,打开TF卡,工具-->打开磁盘:
在物理存储介质中选择TF卡:
然后打开Debian或者Android系统固件,文件-->打开:
在地址0x200那个字节处,右键选择“选块起始”:
按下Alt+G快捷键,输入8200,跳到0x8200处:
在地址0x81FF处,右键选择“选块结束”:
在已选中的部分中右键选择“编辑”:
选择复制选块-->十六进制数值:
打开TF卡窗口,跳转到0x200字节处,右键选择“编辑”:
然后选择“剪贴板数据-->写入”:
到此,2ndboot和Nsih就拷贝到TF相应的位置。
把TF插到Nano Pi2的boot插槽中,然后接上串口转接板,用串口线连接电脑,在电脑上打开串口助手,上电,如果串口助手上显示下图信息,即停止在 Launch to 0x42C00000处,表明2ndboot和Nsih拷贝成功:
裸机开发前的准备工作到这就完成了,接下来就是编写裸机代码了。本帖是学习过程中整理而来,参考了迪卡魏曼依奇的微博“掰搿实验室”的《像玩 51 单片机一样玩 NanoPi2》的相关内容,非常感谢。
nanopi貌似都是用c语言的。没有python的示例??
小白问一下为什么block63也要nish.bin,naish.bin的大小是多少,当block2执行完nish.bin是怎么执行2ndboot,望请赐教,非常感谢