NanoPi NEO小试牛刀(一)

你好!这里是风筝的博客,

欢迎和我一起交流。


      前几天在用Samsung 2440做车牌识别,结果发现这款只有400M主频的芯片处理速度有点慢了,果断换了一块芯片。
      在淘宝买了一块NaomiPi NEO板子。全志H3的芯片,4核1.2G主频,才70块钱,我买的二手,五十块钱。其实也不算是二手,好像是旧版。就是因为这个旧版,刚开始就把我坑了~~~
      现在我在wiki上看这块板子的教程,是V1.3版本的,我买的是V1.2版本的,V1.3版本换了UART串口的位置和引脚顺序,结果我没注意,接上串口一直看不到信息,追着源码搞了好久,最后用万用表才测速串口引脚顺序改变了……
      现在记录下我使用这块NaomiPi NEO板子的过程:
这块板子是使用SD卡来启动的,现在有两种方法来使用SD卡烧写Linux系统:
      方法一:
      下载wiki教程里给的win32diskimager ,用他来烧写官方给的固件。这是傻瓜式操作。一键write就ok。

      方法二:
      我们知道,板子上电,最先开始是从uboot启动的,我们只需要把uboot放到SD卡的最开始的位置即可。
在Ubuntu下插入SD卡:

ls /dev/sd*
就可以看到插入的SD卡在哪。很大程度就是在sdb
接着,如果有多个分区的话,如sdb1,sdb2之类的,就先把分区删除了,删除之前记得要umount:
sudo fdisk /dev/sdb
按m查看选项,按d删除分区。看提示操作即可
删除完分区之后,按n添加分区
按p添加主分区
选择分区1
输入20480,表示从在SD卡的头部留出20480个块。留给uboot使用,第一个分区从20480开始分
接着输入61440,代表结束在61440,就意味着分区1大小为(61440-20480)块大小
接着再来一遍,按n添加分区
按p添加主分区
选择分区2
输入61441,紧跟分区1后面
按回车,默认即可
最后,按w。保存退出
sudo mkfs.vfat -F 32 -I /dev/sdb1将分区1格式化为fat32格式
sudo mkfs.ext4 /dev/sdb2 格式化为ext4分区

      这样,ls /dev/sd*就可以看到我们新建的分区1(sdb1)和分区2(sdb2)了。
      在Ubuntu下可以用gparted图形化查看分区(sudo apt-get install gparted下载)
      或者可以在Windows下查看,大概是这样的:
neo
      前面留出的24M存放uboot,中间存放的是Linux内核,最后放的是根文件系统。

      然后下载官方给的源码:在这可以看到:http://wiki.friendlyarm.com/wiki/index.php/Mainline_U-boot_and_Linux/zh
编译即可。
      最后更新uboot:

dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

      这样我们编译好的uboot就会更新到SD卡的头部上。
      接着更新Linux,当然,你得先编译好Linux:
      直接我们给SD卡分区了,现在得mount上

sudo mount -t vfat /dev/sda1 /mnt
我们就在/mnt目录下挂载了分区1,再把Linux内核和设备树文件复制过来即可:
cp arch/arm/boot/zImage /mnt
cp arch/arm/boot/dts/sun8i--nanopi-.dtb /mnt

      还有一个东西,也要放到分区1之中。那就是boot.scr文件。
      因为我在uboot启动时看到:

mmc0 is current device
Scanning mmc 0:1…
Found U-Boot script /boot.scr
reading /boot.scr
968 bytes read in 19 ms (48.8 KiB/s)
Executing script at 43100000

      这里他会去寻找一个boot.scr文件,里面有一些启动信息,所以我们自己做SD启动卡时,也要放到分区1之中。
boot.scr:

# mkimage -C none -A arm -T script -d boot.cmd boot.scr

setenv fsck.repair yes
setenv ramdisk rootfs.cpio.gz
setenv kernel zImage

setenv env_addr 0x45000000
setenv kernel_addr 0x46000000
setenv ramdisk_addr 0x47000000
setenv dtb_addr 0x48000000

fatload mmc 0 ${kernel_addr} ${kernel}
fatload mmc 0 ${ramdisk_addr} ${ramdisk}
fatload mmc 0 ${dtb_addr} sun8i-${cpu}-${board}.dtb
fdt addr ${dtb_addr}

# setup MAC address 
fdt set ethernet0 local-mac-address ${mac_node}

# setup XR819 MAC address
if test $board = nanopi-duo; then fdt set xr819 local-mac-address ${wifi_mac_node}; fi

# setup boot_device
fdt set mmc${boot_mmc} boot_device <1>

setenv fbcon map:0
setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=${fsck.repair} panic=10 ${extra} fbcon=${fbcon}
bootz ${kernel_addr} ${ramdisk_addr}:500000 ${dtb_addr}

      最后,官方给的固件是Ubuntu的文件系统,我嫌麻烦,就自己换了一个busybox的最小文件系统,制作如下:https://blog.csdn.net/guet_kite/article/details/72639151
最后也是挂载分区2到一个文加夹下,然后把制作好的根文件系统所有的文件复制到分区2即可。

最后。可以看到启动如下:
Linux

猜你喜欢

转载自blog.csdn.net/guet_kite/article/details/79671598