【Nano Pi 2】-15 裸机开发(一)准备篇

  • cztqwan
  • LV5工程师
  • |      2016-02-01 23:50:51
  • 浏览量 4347
  • 回复:4

Nano Pi 2-15 裸机开发(一)准备篇

——cztqwan


转载请注明ICKey



一、前言


本帖讲一下Nano Pi2的裸机开发。在进行裸机开发之前,有一些准备工作需要做,本帖先来介绍Nano Pi2裸机开发需要做的准备工作。


二、启动过程


Nano Pi2使用的是三星S5P4418处理器,S5P4418可以配置为NAND FLASHeMMCSD卡等启动方式,就像电脑可以从硬盘或者光驱启动一样。

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是对芯片一些简单寄存器的配制,包括(启动方式,PLLDDR),也是由三星提供的。由于TF卡一个块为512字节,所以Block64的地址为:0x8200


三、TF卡准备工作


前面已经分析了S5P4418的启动过程,知道了要运行裸机代码,必须要把裸机代码烧写到原来u-boot的位置,而之前的2ndbootNsih都要保留。这就需要用到winhex软件了,WinHex是一款非常不错的16进制编辑器,它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丢失等。在这里,使用winhex2ndbootNsih拷贝到TF相应的位置。

首先把TF完全格式化,然后以管理员模式打开winhex软件,打开TF卡,工具-->打开磁盘:



在物理存储介质中选择TF卡:



然后打开Debian或者Android系统固件,文件-->打开:



在地址0x200那个字节处,右键选择“选块起始”:



按下Alt+G快捷键,输入8200,跳到0x8200处:



在地址0x81FF处,右键选择“选块结束”:



在已选中的部分中右键选择“编辑”:



选择复制选块-->十六进制数值:



打开TF卡窗口,跳转到0x200字节处,右键选择“编辑”:



然后选择“剪贴板数据-->写入”:



到此,2ndbootNsih就拷贝到TF相应的位置。


三、测试


TF插到Nano Pi2boot插槽中,然后接上串口转接板,用串口线连接电脑,在电脑上打开串口助手,上电,如果串口助手上显示下图信息,即停止在 Launch to 0x42C00000处,表明2ndbootNsih拷贝成功



四、结语


裸机开发前的准备工作到这就完成了,接下来就是编写裸机代码了。本帖是学习过程中整理而来,参考了迪卡魏曼依奇的微博“掰搿实验室”的《像玩 51 单片机一样玩 NanoPi2》的相关内容,非常感谢。

  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:4
laoqianII 2016-04-01

nanopi貌似都是用c语言的。没有python的示例??

0   回复
举报
发布
cztqwan 2016-03-01
我的理解是:两个nish.bin都<=1个block,具体多大,因为我也没有详细的资料,所以无法得知。block1中的信息是迁移后的exception vector。4418上电首先执行内部ROM中的一段代码,该代码对4418进行必须的初始化后把SD卡的block1-block32中的数据复制到内部RAM中,然后根据从block1复制到内存的nish.bin的exception vector地址信息,跳转到指定的地址执行程序,该地址下就是2nboot。至于block63中的nish.bin,我个人理解是在2nboot跳转到u-boot时发挥作用。
0   回复
举报
发布
cztqwan 2016-03-01
怎么回复了几次都失败
0   回复
举报
发布
好衰 2016-03-01

小白问一下为什么block63也要nish.bin,naish.bin的大小是多少,当block2执行完nish.bin是怎么执行2ndboot,望请赐教,非常感谢


0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子