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

欢迎和我一起交流。


前几天在用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下查看,大概是这样的:

      前面留出的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.scrsetenv fsck.repair yes
setenv ramdisk rootfs.cpio.gz
setenv kernel zImagesetenv env_addr 0x45000000
setenv kernel_addr 0x46000000
setenv ramdisk_addr 0x47000000
setenv dtb_addr 0x48000000fatload 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即可。

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

NanoPi NEO小试牛刀(一)相关推荐

  1. NanoPi NEO小试牛刀(二)

    你好!这里是风筝的博客, 欢迎和我一起交流. 前面写了NanoPi NEO的启动过程:NanoPi NEO小试牛刀(一) 但是我发现NanoPi NEO启动Linux内核时加载的东西太多了,Linux ...

  2. NanoPi NEO Air使用十五:移植RTL8723BU驱动

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  3. NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  4. NanoPi NEO Air使用十:自己编写驱动来控制LED

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  5. NanoPi NEO Air使用九:使用Linux内核自带的LED驱动

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  6. NanoPi NEO Air使用八:编写个简单的驱动和应用程序

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  7. NanoPi NEO Air使用七:获取并编译U-boot和Linux的源码

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  8. NanoPi NEO Air使用六:使用摄像头

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

  9. NanoPi NEO Air使用五:安装Xfce和xrdp,实现远程访问

    NanoPi NEO Air使用一:介绍 NanoPi NEO Air使用二:固件烧录 NanoPi NEO Air使用三:OverlayFS.CPU温度和频率.wifi.蓝牙.npi-config ...

最新文章

  1. 【Java】全站编码过滤器GenericEncodingFilter代码与配置
  2. ffmpeg3.3新版本AVStream的封装流参数由codec替换codecpar
  3. 计算机二级html真题,计算机二级《Web程序设计》试题及答案
  4. Python分类模型评估
  5. idea+maven打包Java项目
  6. 一致性hash算法Consistent Hashing
  7. JavaBridge install in ubuntu
  8. 神经网络入门学习-一些基本的概念+不含隐层
  9. 金山词霸2006专业版(300M)的无法屏幕取词问题的解决方法!
  10. 服务器固件降级需要重装系统吗,bios降级,小编教你bios可以降级吗
  11. 东芝打印机共享怎么设置_理光打印机共享怎么设置?
  12. html网页头部图片,网页头图设计技巧
  13. python如何绘制曲线图_Python matplotlib 如何绘制双Y轴曲线图?
  14. ROS pgm转jpg
  15. 感知机——鸢尾花 包含代码
  16. tensorflow学习笔记(二十七):leaky relu
  17. (实战)[re:Invent 2018]-001:赛道分析-(致敬1024)
  18. 【Excel】偷懒小技巧3:金额小写自动转换为大写
  19. 微软云计算平台AppFabric即将上市
  20. Virtual Private Network虚拟专用网络-在Linux上搭建专用通道

热门文章

  1. Web前端开发培训之41个JavaScript实用技巧
  2. GPU Profiling 101
  3. 【Arduino+ESP32专题】PlatformIO串口监视器的默认波特率修改
  4. PreScan快速入门到精通第三十四讲基于PreScan进行超声波雷达传感器仿真
  5. [附源码]java毕业设计学习资源共享与在线学习系统
  6. gunicorn、uwsgi、uvicorn认识
  7. 杭州女童遇难之后:父亲见到遗体全身瘫软,奶奶哭着用头猛磕桌子
  8. db2 replace函数的用法_48R软件数据的基本处理之删除重复数据(duplicated()、unique()、distinct()函数)...
  9. TI mmWave radar sensors Tutorial 笔记 | Module 4 : Some System Design Topics
  10. MyBatis映射文件如何给数据库的int类型字段“插入”string类型记录