当前位置: 首页 > ops >正文

全志F10c200开发笔记——移植uboot

相关资料:

(二)uboot移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>-CSDN博客

F1C200S挖坑日记(3)——Uboot编译篇_f1c200s uboot-CSDN博客

一、安装编译器

Linaro Releases

具体下载链接

https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz

下载完成之后如下

我们解压后进入其目录/bin目录下,内容如下

记录一下当前的目录

例如我

/home/nanqiu/Desktop/f10c200/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin

二、uboot移植

1、下载

这里使用的是荔枝派维护的uboot

git clone https://github.com/Lichee-Pi/u-boot.git

下载完成,可以看到

我们进入目录下,然后切换分支

git checkout nano-v2018.01

2、项目配置

2.1、进行配置

然后运行命令,进行配置,其中CROSS_COMPIL的值为编译器目录/arm-linux-gnueabi-

其实这里可以修改makefile,但是我的环境里有好多个版本的arm-linux-gnueabi-编译器,于是我就直接指定目录了

make ARCH=arm CROSS_COMPILE=/home/nanqiu/Desktop/f10c200/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- licheepi_nano_defconfig

如果输入错误可以使用以下命令清除配置

make ARCH=arm distclean

2.2、 图形界面配置

make menuconfig ARCH=arm CROSS_COMPILE=/home/nanqiu/Desktop/f10c200/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-

上下键进行移动,空格进行选定/取消

勾选Enable boot arguments

选择Boot arguments选项,选中回车输入以下内容后回车保存。

console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw

找到bootcmd,输入

load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;

设置完成之后,我们进行保存

3、编译

make ARCH=arm CROSS_COMPILE=/home/nanqiu/Desktop/f10c200/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- -j8

3.1、解决问题

3.1.1、multiple definition of `yylloc'

报错信息如下

usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here

CHK include/generated/generic-asm-offsets.h

collect2: error: ld returned 1 exit status

make[2]: *** [scripts/Makefile.host:108: scripts/dtc/dtc] Error 1

make[2]: *** Waiting for unfinished jobs....

CHK include/config.h

CFG u-boot.cfg

scripts/dtc/pylibfdt/libfdt_wrap.c:154:11: fatal error: Python.h: No such file or directory

154 | # include

| ^~~~~~~~~~

compilation terminated.

解决方法为

我们使用vscode 打开当前目录,找到如下文件./scripts/dtc/dtc-parser.tab.c找到1205行

注释掉YYLTYPE yylloc,然后进行保存,重新编译

3.1.2、 fatal error: Python.h:

报错信息

scripts/dtc/pylibfdt/libfdt_wrap.c:154:11: fatal error: Python.h: No such file or directory

154 | # include

| ^~~~~~~~~~

compilation terminated.

解决方法

1.安装python2

sudo apt update sudo apt install python2.7-dev -y

2.验证安装结果

python --version

3.1.3、Error: arch/arm/dts/.suniv-f1c100s-licheepi-nano.dtb.pre.tmp:59.1-10 syntax error

报错信息

Error: arch/arm/dts/.suniv-f1c100s-licheepi-nano.dtb.pre.tmp:59.1-10 syntax error

FATAL ERROR: Unable to parse input tree

make[2]: *** [scripts/Makefile.lib:329: arch/arm/dts/suniv-f1c100s-licheepi-nano.dtb] Error 1

make[1]: *** [dts/Makefile:51: arch/arm/dts/suniv-f1c100s-licheepi-nano.dtb] Error 2

make: *** [Makefile:876: dts/dt.dtb] Error 2

make: *** Waiting for unfinished jobs....

解决方法

进入文件scripts/Makefile.lib,找到321行,将这个斜杠删除,保存,重新编译

3.1.4、ImportError: No module named _libfdt

报错信息

Traceback (most recent call last):

File "./tools/binman/binman", line 32, in

import control*

File "/home/nanqiu/Desktop/f10c200/u-boot/tools/binman/control.py", line 16, in

import fdt

File "/home/nanqiu/Desktop/f10c200/u-boot/tools/binman/../dtoc/fdt.py", line 13, in

import libfdt

File "scripts/dtc/pylibfdt/libfdt.py", line 15, in

import _libfdt

ImportError: No module named _libfdt

make: *** [Makefile:1148: u-boot-sunxi-with-spl.bin] Error 1

解决方法

1.安装python2

sudo apt update sudo apt install python2.7-dev -y

2.验证安装结果

python --version

4.编译通过

源码目录下可以看到该文件,即编译完成的可执行文件

三、烧录

1.烧录

将TF卡格式化为FAT32格式,然后连接ubuntu

使用如下命令继续将uboot烧录进TF卡

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

http://www.xdnf.cn/news/6338.html

相关文章:

  • C++ Mac 打包运行方案(cmake)
  • 论文中表格跨页该怎么整(如何给跨页表格添加标题和表头)
  • nestjs[一文学懂TypeORM在nestjs中的日常使用]
  • RabbitMQ 消息模式实战:从简单队列到复杂路由(二)
  • #跟着若城学鸿蒙# 鸿蒙-卡证识别
  • 《Deepseek从入门到精通》清华大学中文pdf完整版
  • Python训练打卡Day22
  • 【AI论文】对抗性后期训练快速文本到音频生成
  • 监控易运维管理软件:日志监控,化繁为简
  • 【SPIN】用Promela验证顺序程序:从断言到SPIN实战(SPIN学习系列--2)
  • 代驾小程序订单系统框架搭建
  • 从基础到实习项目:C++后端开发学习指南
  • OkHttp用法-Java调用http服务
  • ERP系统如何做好工厂生产管理?4种ERP先进生产管理模式分享!
  • [Linux]从零开始的STM32MP157 Busybox根文件系统测试及打包
  • AutoVACUUM (PostgreSQL) 与 DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC (Oracle) 对比
  • 第六章: SEO与交互指标 二
  • 2025年5月AI科技领域周报(5.5-5.11):AGI研究进入关键验证期 具身智能开启物理世界交互新范式
  • 20250515配置联想笔记本电脑IdeaPad总是使用独立显卡的步骤
  • python 如何遍历 postgresql 所有的用户表 ?
  • Oracle-相关笔记
  • python中使用neo4j
  • LeetCode 45. 跳跃游戏 II(中等)
  • 牛客网NC22015:最大值和最小值
  • 【Linux系列】Linux 系统下 SSD 磁盘识别
  • 二、xlib事件
  • tomcat项目重构踩坑易错点
  • 【RAP】RAP动作与流行舞蹈/街舞
  • 基于昇腾300IDUO 部署PaddleOCR模型
  • mock 数据( json-server )