文章目录

  • 前言
    • 介绍
    • 规格
    • 芯片优缺点
  • MangoPi的Buildroot一键编译
    • 第一次编译
    • 应用默认配置
    • 常规编译
      • 如果更改了 DTS 或 kenrel 构建
      • 如果更改了 Uboot,则构建
    • 加快构建进度
    • 刷固件
    • Windows下失败了,转战Linux下烧录
  • Linux下烧录
    • 使用sunxi-tools
    • 安装putty
      • 在ubuntu上找串口号
    • 擦除
    • 开始烧录

兜兜转转还是玩上了MangoPi-R3!因为是ARM9的芯片内核架构,所以总觉得过时了的,至少也要整个ARM-A7的架构芯片。

前言

https://mangopi.cc/f1c_mainline
https://wiki.dfrobot.com/MangoPi_R3_SKU_DFR0780

介绍

这款微型开发板专为运行 Linux 而设计。尽管机身很小,但它具有所有重要功能。板载F1C200S作为主控芯片,提供多种常用外设端口:GPIO、I2C&SPI、SDIO、Audio port(record,play), Video(RGB565 Display, touch, DVP), USB Host, OTG等. 此外,板卡内置64MB DDR和板载128MB Nand Flash,全面支持Linux生态,运行完整的Python。

目前该产品是完全开源的,用户可以根据自己的需求编译任意模块。但是,它主要面向 Python 开发人员和高级爱好者,因为它上手有点困难。

规格

芯片型号 F1C100S F1C200S F1C500S F1C600
内存 SIP 32MB DDR1 64MB DDR1 128MB DDR1 256MB DDR1
  • QFN88封装(10x10mm)
  • 板载 128MB Nand Flash
  • ARM926EJ-S内核,420MHz系统时钟默认频率,可超频至700MHz及以上
  • 丰富的 GPIO 引脚
  • 板载 SDIO 接口,用于连接 SD 卡或 SDIO WiFi + BT 模块
  • DVP摄像头接口,支持OV2640、GC0328等摄像头。
  • RGB565显示接口和6线触摸接口
  • 板载麦克风和功率放大器
  • 低功耗
  • 支持完整的Python运行

芯片优缺点

  • 缺点:主频过低,内核太古老(ARM9)
  • 优点:便宜,内置DDR,资料丰富(老芯片的优势)

MangoPi的Buildroot一键编译

地址:https://github.com/mangopi-sbc/buildroot-mangopi-r

安装软件包

sudo apt install rsync wget unzip build-essential git bc swig libncurses-dev libpython3-dev libssl-dev
sudo apt install python3-distutils

下载BSP包

git clone https://github.com/mangopi-sbc/buildroot-mangopi-r

第一次编译

注意:构建固件不需要 Root 权限。

应用默认配置

注意:应用 defconfig 会将所有 buildroot 配置重置为默认值。

通常,您只需要应用一次。

cd buildroot-mangopi-r
make widora_mangopi_r3_defconfig

常规编译

make -j16

如果更改了 DTS 或 kenrel 构建

./rebuild-kernel.sh

如果更改了 Uboot,则构建

./rebuild-uboot.sh

加快构建进度

在百度云下载离线的 dl
Buildroot 将在编译固件时下载源代码。您可以获取“dl”文件夹的可信存档以加快速度。 https://pan.baidu.com/s/1-5CiMwXMQWjZxsFhsyRC5Q?pwd=1111

.make source

没有搞清楚这里是怎么用的,现在是下载了两个包:

  • buildroot-dl-20220130.zip
  • buildroot-mangopi-r-master.zip
    是不是把buildroot-dl-20220130.zip解压到buildroot-mangopi-r-master目录里面呢?

明白了,把buildroot-dl-20220130.zip解压出来并改名为dl,然后再把dl移动到buildroot-mangopi-r-master.zip解压出来的文件夹目录里面去就行了,编译的好快 啊。

最终编译完成了。

INFO: hdimage(sysimage-sdcard.img): adding partition 'u-boot' (in MBR) from 'u-boot-sunxi-with-spl.bin' ...
INFO: hdimage(sysimage-sdcard.img): adding partition 'boot' (in MBR) from 'bootfs.vfat' ...
INFO: hdimage(sysimage-sdcard.img): adding partition 'rootfs' (in MBR) from 'rootfs.ext4' ...
INFO: hdimage(sysimage-sdcard.img): writing MBR
board/allwinner/generic/genimage-nor.cfg:33: no sub-section title/index for 'config'
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"" (stderr):
INFO: cmd: "rm -rf "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"" (stderr):
INFO: cmd: "cp -a "/tmp/tmp.kqghzcncg8" "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root"" (stderr):
INFO: cmd: "find '/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root' -depth -type d -printf '%P\0' | xargs -0 -I {} touch -r '/tmp/tmp.kqghzcncg8/{}' '/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root/{}'" (stderr):
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/images"" (stderr):
INFO: flash(sysimage-nor.img): writing image partition 'u-boot' (0x80000@0x0)
INFO: flash(sysimage-nor.img): writing image partition 'splash' (0x80000@0x80000)
INFO: flash(sysimage-nor.img): writing image partition 'kernel' (0x500000@0x100000)
INFO: flash(sysimage-nor.img): writing image partition 'rom' (0xa00000@0x600000)
board/allwinner/generic/genimage-nand.cfg:39: no sub-section title/index for 'config'
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"" (stderr):
INFO: cmd: "rm -rf "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp"" (stderr):
INFO: cmd: "cp -a "/tmp/tmp.cjWlxAkEjg" "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root"" (stderr):
INFO: cmd: "find '/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root' -depth -type d -printf '%P\0' | xargs -0 -I {} touch -r '/tmp/tmp.cjWlxAkEjg/{}' '/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/build/genimage.tmp/root/{}'" (stderr):
INFO: cmd: "mkdir -p "/home/liefyuan/Liefyuan/mangopi-r/buildroot-mangopi-r-master/output/images"" (stderr):
INFO: flash(sysimage-nand.img): writing image partition 'u-boot' (0x80000@0x0)
INFO: flash(sysimage-nand.img): writing image partition 'splash' (0x80000@0x80000)
INFO: flash(sysimage-nand.img): writing image partition 'kernel' (0x500000@0x100000)
INFO: flash(sysimage-nand.img): writing image partition 'rom' (0x7700000@0x600000)real   20m23.669s
user    93m8.759s
sys 31m2.006s

编译出来的文件:buildroot-mangopi-r-master/output/images

一步到位,所有版本都编译出来了(牛逼!):

bootfs.vfat     rootfs.ext4        sysimage-sdcard.img
devicetree.dtb  rootfs.squashfs    u-boot.bin
kernel.itb      rootfs.tar         u-boot-sunxi-with-nand-spl.bin
rootfs.cpio     splash.bmp         u-boot-sunxi-with-spl.bin
rootfs.cpio.gz  sysimage-nand.img  zImage
rootfs.ext2     sysimage-nor.img

刷固件

指导说明文档:https://github.com/mangopi-sbc/buildroot-mangopi-r/blob/master/flashutils/README.md

Windows下失败了,转战Linux下烧录

Linux下烧录

使用sunxi-tools

sunxi-tools 是全志 SoC(全志科技开发的智能应用处理器 SoC)ARM 设备的命令行工具集合。

设置和安装 sunxi-tools

安装依赖包

sudo apt install pkg-config zlib1g-dev libusb-dev libusb-1.0-0-dev

下载代码

git clone https://github.com/Icenowy/sunxi-tools.git -b f1c100s-spiflash

编译安装

cd sunxi-tools
make
sudo make install

什么是dfu? 设备固件升级(DFU)是一种独立于分销商和设备的机制,用于通过其制造商提供的改进版本来升级USB设备的固件,从而提供(例如)一种部署固件错误的方法修复。在固件升级操作过程中,USB 设备将有效地改变其工作模式,从而成为 PROM 编程器。按照官方 DFU 规范,任何类型的 USB 设备都可以实现此功能。DFU 还允许用户自由使用备份固件来刷新 USB 设备。结果之一是刷新的 USB 设备可以充当多种设备类型。

什么是 dfu-util? dfu-util 是一个实现 USB DFU(通用串行总线设备固件升级)协议的主机 (PC) 程序。DFU 会将固件下载到通过 USB 连接的设备,或从设备下载固件。其应用范围从微控制器板等小型设备到手机设备。使用 dfu-util,您可以从支持 DFU 的设备下载/上传固件。

通过 apt-get 安装 dfu-util

sudo apt install dfu-util

安装putty

putty 是一个 Telnet、SSH 和串口连接软件。

安装串口工具putty

sudo apt-get install putty

打开串口调试软件putty

默认安装的情况下,putty被添加到/usr/bin目录下,所以可以直接在终端使用putty命令打开。

在ubuntu上找串口号

dmesg | grep tty
liefyuan@ubuntu:~/Liefyuan/myGit$ dmesg | grep tty
[    0.004000] console [tty0] enabled
[    1.247164] 00:05: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[25931.988675] usb 2-2.2: ch341-uart converter now attached to ttyUSB0

由此可知,板子的串口是ttyUSB0

一般串口的名字在dev下,如果没有外接串口卡,默认是dev。

使用命令ls /dev/ttyUSB0查看是否存在

liefyuan@ubuntu:~/Liefyuan/myGit$ ls /dev/ttyUSB0
/dev/ttyUSB0

如果结果存在,则串口地址为/dev/ttyUSB0

在putty中填入串口,然后打开串口格式化

序列号:填写对应的序列号
速度:填写115200

打开有问题时记得加sudo putty

擦除

putty打开以后,就进入固件位置:
同时按下tiny200的开机键和rst键,然后松开

此时运行.\fel-uboot.sh脚本

putty里面就有打印数据了

然后等待操作完成后,在putty里面输入命令:mtd erase spi-nand0,格式化。


U-Boot SPL 2020.07 (Feb 16 2022 - 01:28:19 +0000)
DRAM: 64 MiB
Trying to boot from FELU-Boot 2020.07 (Feb 16 2022 - 01:28:19 +0000) Allwinner TechnologyCPU:   Allwinner F Series (SUNIV)
Model: Allwinner F1C100s Generic Device
DRAM:  64 MiB
MMC:   mmc@1c0f000: 0, mmc@1c10000: 1
Setting up a 800x480 lcd console (overscan 0x0)
In:    serial
Out:   vga
Err:   vga
Allwinner mUSB OTG (Peripheral)
Hit any key to stop autoboot:  0
Card did not respond to voltage select!
Card did not respond to voltage select!
unrecognized JEDEC id bytes: ff, c8, 51
Failed to initialize SPI flash at 0:0 (error -2)
List of MTD devices:
* spi-nand0- device: spi-nand@1- parent: spi@1c05000- driver: spi_nand- type: NAND flash- block size: 0x20000 bytes- min I/O: 0x800 bytes- OOB size: 128 bytes- OOB available: 4 bytes- 0x000000000000-0x000008000000 : "spi-nand0"
=========================
Boot Device: fel
Boot Slot 0: empty
Boot Slot 1: spi-nand
=========================
Booting from FEL...
DFU waiting on SPI-NAND...
musb-hdrc: peripheral reset irq lost!
=> mtd erase spi-nand0
Erasing 0x00000000 ... 0x07ffffff (1024 eraseblock(s))
=>

添加文件权限
使用ll命令查看文件权限。

如果文件没有执行权限,则需要添加权限,通过以下命令添加权限。

chmod +x fel-uboot.sh
chmod +x dfu-nand-ubifs.sh

开始烧录

输入固件文件夹

按下开发板子上的 boot 按钮和 rst 按钮,然后松开rst按钮并运行以下命令。

sudo ./fel-uboot.sh && ./dfu-nand-ubifs.sh

开始烧录啦,挺壮观的!

mangopi R3--Allwinner F1C200S一步到位编译法相关推荐

  1. make,makefile,cmake“暴力编译法”的个人经验或理解。

    通常我们在本地编译库(opecv.pcl)等我们喜欢使用make -jN  (N代表线程数)这样可以加速编译过程, 但是,这不一定是"线程安全"的,因为当某个线程在编译时,经常其他 ...

  2. php重新编译curl扩展,在Linux安装php的curl扩展,并支持https请求,重新编译法

    环境:php5.5.5 + nginx 任务:安装php curl扩展,并支持https 血与泪之坑:我先安装了curl,发现不支持https,然后再安装openssl,然而一切都晚了,折腾了半天,还 ...

  3. C语言编译:CMakeLists.txt语句【01】

    CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的 Makefile 或者 project 文件,CMake 并不直接建构出最终的软件, ...

  4. gcc 编译多个源文件-转

    一. 常用编译命令选项 假设源程序文件名为test.c. 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为 ...

  5. 驱动开发的几种编译环境配置法----PS:我孤陋寡闻了。。。。反省啊。。。。

    驱动开发与Win32下的程序开发不同,没有一套智能的IDE环境,点点鼠标框架代码IDE就帮你生成好了.Windows下的开发为什么那么容易上手,Visual studio功不可莫.一帮懒人在MS的&q ...

  6. 系统开发c语言技术参数,1 C语言 gcc 介绍 C 语言编译 main接受参数

    1 C语言 gcc 介绍 C 语言编译 main接受参数 发布时间:2020-07-19 20:18:28 来源:51CTO 阅读:1216 作者:990487026 1第一个c语言的hello wo ...

  7. 中央处理器——微程序

    一.小引 1.微程序控制基本思想 把操作控制信号编制成微指令,存放到只读存储器(控制存储器)里,运行时从控存中取出这些微指令,从而产生所需的各种操作控制信号 2.技术 微程序设计技术是用软件方法来设计 ...

  8. alu和mdr位数相等吗_计算机组成原理复习

    概论 冯诺依曼体系 冯·诺依曼结构的特点是: 计算机硬件系统由五大部件(存储器.运算器.控制器.输入设备和输出设备)组成:计算机中采用二进制形式表示信息:采用存储程序的工作方式 . 冯诺依曼思想包含三 ...

  9. 安卓系统层开发之C++

    VIP01-2020.10.22-C语言基础01-地址总线原理 数据类型 结构类型 struct sizeof 是测量person堆区分配的大小 #include <stdio.h> #i ...

最新文章

  1. Hive数据导入Elasticsearch
  2. IdentityServer4系列 | 快速搭建简易项目
  3. 《ASP.NET Core 微服务实战》-- 读书笔记(第3章)
  4. [C++11]move资源的转移
  5. C++并发编程实战---阅读笔记
  6. accsess转成mysql语句_access数据库转mysql经验分享
  7. docker mysql数据库初始化_如何在Mysql的Docker容器启动时初始化数据库
  8. (转)linux dumpe2fs命令
  9. 解决eclipse出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
  10. 怎么设置java内存_如何修改jvm内存 内存设置过大
  11. HTML5_增强可访问性和解决IE兼容性问题
  12. 用JavaScript验证密码强度
  13. 第八章 文件资源共享
  14. Oracle踩坑之解决数值0.2只显示成.2方法
  15. VB6.0软件安装包(永久),适用于Windows各系统附安装教程
  16. 体验更简单的 DM —— v1.0.2
  17. Nginx实现动静分离(Nginx图片服务器及404问题解决)
  18. 《并发数据结构与多核编程》作业题答案
  19. iconv()和mb_conver_encoding()字符编码转换函数
  20. 如何获得凤凰网或腾讯视频链接并下载到本地

热门文章

  1. es备份之snapshot SLM策略cron详解
  2. Linux的触屏软件安装,为 Linux 安装触摸屏 -电脑资料
  3. 兆鹏带你读watir——【第五篇】watir的js应用(技巧篇)
  4. Thinkpad笔记本散热器与风扇的寿命与清理问题
  5. eclipse安装说明
  6. 编码——永不退色的计算机科学经典著作
  7. 数据结构之堆(Heap)及其用途
  8. 项目经理的选人和用人-三合与情境领导
  9. 用PHP写PHP扩展-Another way writing php extensions
  10. qt写文本文件换行符_小小换行符乱谈(文本文件vs二进制文件)