全志F1C100s入坑与填坑 uboot Linux Kernel 与buildroot

article/2025/9/22 4:04:37

全志F1C100s
入手了几块全志的板子准备玩一玩随便记录一下!!
如图 是一块荔枝派 Nano

在这里插入图片描述
从sipeed官网可得如下介绍
官网传送门-----》 sipeed
在这里插入图片描述
Nano 硬件参数#
硬件参数
CPU: 全志 F1C100s, ARM 926EJS , 最高 900MHz

内存:

集成32MB DDR
存储:

预留SOP8 SPI Flash焊盘(可定制贴片8~32MB SPI Nor Flash);
板载 TF卡座,可TF启动。
显示:

通用 40P RGB LCD FPC座
可直插常见的40P 4.3/5/7寸屏幕(板载背光驱动),通过转接板可插50P 7/9寸屏
支持常见的272x480, 480x800, 1024x600等分辨率
板载电阻式触摸屏芯片,另配合底板可适配电容触摸屏
支持 720P 视频输出
支持 H.264 / MPEG 等视频流解码
通信接口

SDIO,可搭配配套SDIO WiFi+BT 模块
SPI x2
TWI x3
UART x3
OTG USB x1
TV out
下面开始入坑!!!

uboot

首先获取uboot源码

git clone https://gitee.com/LicheePiNano/u-boot.git
cd u-boot# 查看分支
git branch -a
# 切换到 Nano 分支
git checkout nano-lcd800480
# 此处告知make采用arm-linux-gnueabi下的所有交叉编译工具,目标架构为Arm,设定各项默认配置为 nano 的spiflash支持版
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig# 若不带spi-flash的板子,请换成 licheepi_nano_defconfig# 进行可视化配置
make ARCH=arm menuconfig

我这里使用的屏幕分辨率是800 x 480
需要去修改一下配置
第一步
ARM architecture --> Enable graphical uboot console on HDMI, LCD or VGA 为 Y
第二步
LCD panel timing details 为:
x:800,y:480,depth:18,pclk\khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0
在这里插入图片描述
开始编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j16

在这里插入图片描述
成功生成了 u-boot-sunxi-witch-spl.bin文件
在这里u-boot已经编译完成
下一步开始编译Linux

Linux

第一步 获取Linux源码

git clone https://gitee.com/LicheePiNano/Linux.git

使用./arch/arm/configs/f1c100s_nano_linux_defconfig配置文件

make ARCH=arm f1c100s_nano_linux_defconfig

修改设备树支持LCD屏幕

Nano的设备树在源码的
linux --> arch --> arm --> boot --> dts --> suniv-f1c100s-licheepi-nano.dts;

改为适配800X480的屏,此处应当:

/ { }所包裹的根节点目录下,panel属性下的compatible,应修改为:
“lg,lb070wv8”, “simple-panel”
在这里插入图片描述

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8  
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8 INSTALL_MOD_PATH=out modules 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8 INSTALL_MOD_PATH=out modules_install 

最后生成zImage文件与dtb文件
内核img文件:./arch/arm/boot/zImage
设备树dtb文件:./arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb
下一步编译buildroot

buildroot

首先安装一些依赖,比如linux头文件:

apt-get install linux-headers-$(uname -r)
wget https://buildroot.org/downloads/buildroot-2021.02.4.tar.gz
tar xvf buildroot-2021.02.4.tar.gz
cd buildroot-2021.02.4/
make menuconfig

make menuconfig

以下选项为基础配置:

  • Target options
    • Target Architecture (ARM (little endian))
    • Target Variant arm926t
  • Toolchain
    • C library (musl) # 使用musl减小最终体积
  • System configuration
    • Use syslinks to /usr … # 启用/bin, /sbin, /lib的链接
    • Enable root login # 启用root登录
    • Run a getty after boot # 启用登录密码输入窗口
    • (123456) Root password # 默认账户为root 密码为licheepi

另可自行添加或删除指定的软件包
如下图所示

在这里插入图片描述
在这里插入图片描述
开始编译!!!

make

根文件系统编译花费时间较长

把编译好的文件准备好之后下面开始烧录进flash了

编译和使用sunxi-tools

烧录需要这个工具

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

安装依赖库

sudo apt install libz libusb-1.0-0-dev
make
make install

在flash芯片第一脚 飞出一根线在板子USB上电时与GND连接 启动后然后断开连接
在这里插入图片描述
然后连接到Ubuntu
可以通过下面命令查看是否连接成功

sudo sunxi-fel ver

在这里插入图片描述

烧写u-boot

sunxi-fel -p spiflash-write 0 ../u-boot/u-boot-sunxi-with-spl.bin

然后等待下载完成即可完成uboot烧写
在这里插入图片描述

烧写Linux&dtb

sudo sunxi-fel -p spiflash-write 0x0100000 ../Linux/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb
sudo sunxi-fel -p spiflash-write 0x0110000 ../Linux/arch/arm/boot/zImage

烧写文件系统
在buildroot
/licheepi_nano/buildroot-2021.02.4/output/images生成了一个rootfs.tar文件

在这里插入图片描述
然后解压到一个目录

sudo tar -xvf rootfs.tar -C /home/dwh/f1c100s/rootfs

使用mkfs.jffs2 工具把/rootfs转为img文件

sudo mkfs.jffs2 -s 0x100 -e 0x10000 --pad=0xAF0000 -d rootfs/ -o jffs2.img

烧录

sudo sunxi-fel -p spiflash-write 0x510000 ../../f1c100s/jffs2.img

最后看看效果吧u-boot成功启动
在这里插入图片描述
屏幕也显示了荔枝派开机的Logo
在这里插入图片描述

最后成功进入文件系统
在这里插入图片描述

遇到的问题,试过一次出现Linux内核启动后进入不了文件系统的情况

[    1.550893] ALSA device list:
[    1.560150]   #0: Loopback 1
[    1.569966] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    1.590760] cfg80211: failed to load regulatory.db
[    1.603821] EXT4-fs (mmcblk0p2): couldn't mount as ext3 due to feature incompatibilities
[    1.670528] EXT4-fs (mmcblk0p2): recovery complete
[    1.683334] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[    1.703641] VFS: Mounted root (ext4 filesystem) on device 179:2.
[    1.724527] devtmpfs: mounted
[    1.738167] Freeing unused kernel memory: 1024K
[    1.814266] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module binfmt-0000, throttling...
[    6.888833] request_module: modprobe binfmt-0000 cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[    6.928203] Starting init: /sbin/init exists but couldn't execute it (error -8)
[    7.029799] request_module: kmod_concurrent_max (0) close to 0 (max_modprobes: 50), for module binfmt-0000, throttling...
[   12.088839] request_module: modprobe binfmt-0000 cannot be processed, kmod busy with 50 threads for more than 5 seconds now
[   12.129497] Starting init: /bin/sh exists but couldn't execute it (error -8)
[   12.179874] Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.
[   12.213491] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc8-licheepi-nano+ #4
[   12.234051] Hardware name: Allwinner suniv Family
[   12.245560] [<c010e550>] (unwind_backtrace) from [<c010b6a8>] (show_stack+0x10/0x14)
[   12.266672] [<c010b6a8>] (show_stack) from [<c0116878>] (panic+0xb8/0x230)
[   12.286927] [<c0116878>] (panic) from [<c06652bc>] (kernel_init+0xd4/0x10c)
[   12.307407] [<c06652bc>] (kernel_init) from [<c0107dc0>] (ret_from_fork+0x14/0x34)
[   12.328601] Rebooting in 5 seconds..
[   18.314583] Reboot failed -- System halted

解决方法出现编译文件系统然后出现烧录。


http://chatgpt.dhexx.cn/article/HDt0MRp9.shtml

相关文章

全志F1C100S声卡驱动探究

如果有问题&#xff0c;请加QQ群 891339868 进行交流 最近刚上手全志的F1C100S这个片子&#xff0c;听一下音乐&#xff0c;本来想着挺简单&#xff0c;内核配置一下驱动就OK&#xff0c;谁知道上来就一闷棍&#xff0c;主线内核不支持内置声卡&#xff0c;经过多方面的研究&am…

【f1c200s/f1c100s】全志f1c200s开发板设计(含原理图和PCB)

f1c200s开发板设计 芯片特征开发板包含资源 开发板如图所示&#xff0c;模仿树莓派取了一个mango-pi的名字&#xff0c;haha~。 硬件主要参考了荔枝派nano和正点原子开发板。经过测试&#xff0c;全部功能正常。 芯片特征 全志F1C200s与F1C100s的区别为F1C200s含有64M SIP RA…

全志F1C100s使用记录:资料索引与基础说明

文章目录 前言资料来源u-boot & linux基础特性启动过程FEL模式电路设计 前言 最早接触到F1C100s是前两年的一个文章&#xff0c;里面使用F1C100s制作了一张可以运行Linux的名片&#xff0c;就是下图这个。下图上实际电路部分就占用角落一点点面积&#xff0c;当时觉得蛮有…

MySql 内连接与外连接 作用和 区别

内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接&#xff1a;左边表数据行全部保留…

php左内连接,内连接和外连接的区别是什么

内连接和外连接的区别&#xff1a;1、连接结果不同&#xff0c;内连接的连接结果仅包含符合连接条件的行&#xff0c;而外连接的连接结果包含了符合连接条件的行&#xff1b;2、注意事项不同&#xff0c;内连接需要注意区分在嵌套查询时使用的any以及all的区别&#xff0c;外连…

Mysql内连接和外连接的区别

内连接 简单来说&#xff1a;就是根据交集的部分来链接到一条完整的数据&#xff0c;以此来完成查询 以两张表相同的部分来链接上两张表的数据&#xff0c;而不是说&#xff0c;内连接查询的就是交集的部分&#xff0c;那样查询出来的不就是表的id信息了或者仅仅是关联的信息 …

mysql内连接和左连接的区别_MySQL连接查询 内连接和外连接的区别

展开全部 内连接&#xff1a;指连接结果仅包含符合连接条件的行&#xff0c;参与连接的两个表都应该符合连接条件。 外连62616964757a686964616fe78988e69d8331333363393638接&#xff1a;连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连…

mysql内外三种连接,mysql内连接和外连接的区别

以下面两张表为例来看一下内连接与外连接的区别&#xff1a; 一、内连接( 最常用 ) 定义&#xff1a;仅将两个表中满足连接条件的行组合起来作为结果集。 关键词&#xff1a;INNER JOINselect * from employees e inner join department d on e.employee_id d.department_id …

Sql 中内连接、外连接、全连接、交叉连接的区别

外连接(out join) 外连接分为外左连接(left outer join)和外右连接(right outer join) 注释&#xff1a;left outer join 与 left join 等价&#xff0c; 一般写成left join right outer join 与 right join等价&#xff0c;一般写成right join 左连接&#xf…

谈谈你对计算机的发展,结合您目前对计算机的认识,请您谈谈对计算机发展趋势的看法。...

计算机从出现至今&#xff0c;经历了机器语言、程序语言、简单操作系统和Linux、Macos、BSD、Windows等现代操作系统四代&#xff0c;运行速度也得到了极大的提升&#xff0c;第四代计算机的运算速度已经达到几十亿次每秒。 计算机也由原来的仅供军事科研使用发展到人人拥有&am…

对计算机科学与技术专业课程的认识,计算机科学与技术专业课程

计算机科学与技术专业课程计算机科学与技术专业课程 二、课程简介 TOP 1.数字逻辑电路: “数字逻辑”是计算机专业本科生的一门主要课程,具有自身的理论体系和很强的实践性。它是计算机组成原理的主要先导课程之一,是计算机应用专业关于计算机系统结构方面的主干课程之一。…

计算机网络技术的专业认识,计算机网络技术课程学习后的自我认识

计算机网络技术课程学习后的自我认识 随着计算机、多媒体、现代通讯网络为代表的信息技术的迅猛发展&#xff0c;信息技术已经渗透到了教育领域&#xff0c;在教育领域中引起了一场深刻的变化。小编是YJBYS小编整理的计算机网络技术课程学习后的自我认识&#xff0c;欢迎阅读 信…

计算机专业认识和规划,计算机科学与技术专业认识与规划

计算机科学与技术专业认识与规划 专业认识与规划专业认识与规划对于这个专业的学生&#xff0c;它要求学生的英语水平&#xff0c;数学水平很高。最主要的是&#xff0c;它的专业课程很多&#xff0c;很复杂&#xff0c;很累人&#xff0c;它需要你付出很多的努力&#xff0c;…

对计算机网络的认识论文800,对计算机的认识论文

为毕业生写对计算机的认识论文提供对计算机的认识论文范文参考,涵盖硕士、大学本科毕业论文范文和职称论文范文&#xff0c;包括论文选题、开题报告、文献综述、任务书、参考文献等&#xff0c;是优秀免费对计算机的认识论文网站。 对计算机软件属性和保护方式的认识 摘要&…

JS取整,取余

1、取整 // 丢弃小数部分,保留整数部分 parseInt(5/2)  // 2 2.向上取整 // 向上取整,有小数就整数部分加1 Math.ceil(5/2)  // 3 3.向下取整 // 向下取整,丢弃小数部分 Math.floor(5/2)  // 2 4四舍五入 // 四舍五入 Math.round(5/2)  // 3 5 取余 // 取余 6…

JS中的求余和求模

在JS中有两个操作符&#xff0c;求余和求模&#xff0c;它们本质上并没有区别&#xff0c;但仍有一些差异&#xff0c;今天就给大家区分一下它们 求余 符号&#xff1a;% 写法&#xff1a;a % b 求余&#xff1a;a % b &#xff0c;表示为a rem b&#xff0c;相当于 a - n * …

js数据取整,取余,保留小数,数据脱敏等的一些处理方式

一个经典的解决四舍五入问题后js保留两位小数的方法&#xff1a; 1.四舍五入保留2位小数&#xff08;若第二位小数为0&#xff0c;则保留一位小数&#xff09; function keepTwoDecimal(num) {var result parseFloat(num);if (isNaN(result)) {alert(传递参数错误&#xff0…

js中小数计算时精度问题

js中的number为双精度浮点型&#xff0c;计算时需要先进行进制转换&#xff0c;将十进制换成二进制&#xff0c;而进制转换时&#xff0c;小数就有可能出现精度问题了&#xff0c;原因如下 整数转二进制&#xff1a;除二取余法&#xff08;没有问题&#xff09; 4 除以 2 取余…

JavaScript数学运算(取整,取余和取模)

来源 | https://www.fly63.com 这篇文章主要介绍js取整、取余和取模的实现方法和它们之间的区别&#xff0c;以及Math对象的常用方法函数介绍&#xff0c;有需要的朋友可以参考下。 取整 在项目开发过程中&#xff0c;有时要对小数取整操作&#xff0c;JavaScript也提供了4种方…

JavaScript数字取整、取余总结

一、取整&#xff1a; 取整 //丢弃小数部分&#xff0c;保留整数部分 parseInt(85.5)//85向上取整 //向上取整&#xff0c;有余数或者小数&#xff0c;整数位1 Math.ceil(7/3) //3 Math.ceil(85.6) //86 Math.ceil(72.1) //73向下取整 //向下取整&#xff0c;有余数或者小数…