全志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.mzph.cn/bicheng/81114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见WEB漏洞----暴力破解

什么是暴力破解 暴力破解 (Brue Force) 是一种攻击方法 (穷举法),简称为“爆破”,黑客通过反复猜解和实验,旨在以暴力手段登入、访问目标主机获取服务,破坏系统安全,其属于 ATT&CK技术中的一种,常利用…

ARM A64 LDR指令

ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…

2.安卓逆向2-adb指令

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 工具下载: 链接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

Obsidian Callouts标注框语法

Obsidian 从 0.14 版本开始原生支持 Callouts: 语法基于 Markdown 引用块(>)扩展: 语法格式如下: > [!类型] 可选标题 > 内容支持 **Markdown 格式**、[[内部链接]] 和嵌入文件。预览 可选类型一览&#xf…

nt!MiAllocateWsle函数分析之设置Wsle[WorkingSetIndex]

第一部分: 1: kd> p nt!MiAddValidPageToWorkingSet0xa9: 80a83c13 e8da9afcff call nt!MiAllocateWsle (80a4d6f2) 1: kd> t nt!MiAllocateWsle: 80a4d6f2 55 push ebp 1: kd> dv WsInfo 0x8953a1f8 PointerPte …

docker 命令操作大全

1 Docker Hello World 简单命令 docker run ubuntu:15.10 /bin/echo "Hello world" docker run:启动一个新容器。 ubuntu:15.10:使用的 Docker 镜像(Ubuntu 15.10 版本)。 Docker 首先从本地主机上查找镜像是否存在&a…

【软件工程】基于机器学习的多缺陷定位

基于机器学习的多缺陷定位(Multi-Dault Localization, MDL)是软件工程和自动化测试领域的重要研究方向,旨在通过机器学习技术高效识别代码中多个潜在缺陷的位置。以下从方法、挑战、应用场景及未来方向展开分析: 一、核心方法 监督…

用MCP往ppt文件里插入系统架构图

文章目录 一、技术架构解析1. Markdown解析模块(markdown_to_hierarchy)2. 动态布局引擎(give_hierarchy_positions)3. PPTX生成模块(generate_pptx)二、核心技术亮点1. 自适应布局算法2. MCP服务集成三、工程实践建议1. 性能优化方向2. 样式扩展方案3. 部署实践四、应用…

CS016-2-unity ecs

目录 【23】射击改进 【24】僵尸生成器 ​编辑【25】随机行走 【27】射击光效 【23】射击改进 a. 当距离目标太远的时候,要继续移动。而当距离目标到达攻击距离之后,则停止移动。 上图中的if:判断自身和目标的距离是否大于攻击距离&#…

新能源汽车制动系统建模全解析——从理论到工程应用

《纯电动轻卡制动系统建模全解析:车速-阻力拟合、刹车力模型与旋转质量转换系数优化》 摘要 本文以纯电动轻卡为研究对象,系统解析制动系统建模核心参数优化方法,涵盖: 车速-阻力曲线拟合(MATLAB实现与模型验证&…

函数专题1

函数的定义 函数的基本写法如下所示: def function_name(parameter1, parameter2, ...):"""Docstring: 描述函数的功能、参数和返回值 (可选但强烈推荐)"""# 函数体: 实现功能的代码# ...return value # 可选,用于返回结…

红黑树:数据世界的平衡守护者

在 C 算法的神秘森林里,红黑树是一棵充满智慧的 “魔法树”。它既不像普通二叉搜索树那样容易失衡,也不像 AVL 树对平衡要求那么苛刻。作为 C 算法小白,今天就和大家一起深入探索红黑树的奥秘,看看它是如何成为数据世界的平衡守护…

【hot100-动态规划-139.单词拆分】

力扣139.单词拆分 本题要求判断给定的字符串 s 是否可以被空格拆分为一个或多个在字典 wordDict 中出现的单词,且不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用,这是一个典型的动态规划问题。 动态规划思路 定义状态: 定义一个布尔类型的数组 dp,其中…

ZFile与Cpolar技术结合实现远程数据实时访问与集中管理的可行性分析

文章目录 前言1.关于ZFile2.本地部署ZFile3.ZFile本地访问测试4.ZFile的配置5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定ZFile公网地址 前言 在信息爆炸的年代,每个现代人都在数字浪潮中扮演着独特的角色。不论是商务精英、影像创作者还是学术达人&…

Vue2在子组件上使用v-model实现数据的双向绑定、.sync修饰符

1、v-model 先看示例&#xff1a; //父组件<template><ChildComponent v-model"parentData" /> </template><script> import ChildComponent from ./ChildComponent.vue;export default {components: {ChildComponent},data() {return {pa…

自学嵌入式 day 18 - 数据结构 1

数据结构 相互之间存在一种或多种特定关系的数据元素的集合 1.特定关系&#xff1a; &#xff08;1&#xff09;逻辑结构&#xff1a; ①集合&#xff1a;所有在同一个集合中&#xff0c;关系平等。 ②线性关系&#xff1a;数据和数据之间是一对一的关系。&#xff08;数组…

《Java 大视界——Java 大数据在智能电网分布式能源协同调度中的应用与挑战》

随着风电、光伏等分布式能源大规模接入电网&#xff0c;传统调度系统面临数据规模激增、响应延迟显著、多源异构数据融合困难等核心问题。本文聚焦Java生态下的大数据技术体系&#xff0c;深入探讨其在智能电网实时监测、负荷预测、资源优化配置等场景中的落地实践。通过分析Sp…

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs-MCP大模型上下文解析

解密企业级大模型智能体Agentic AI 关键技术&#xff1a;MCP、A2A、Reasoning LLMs-MCP大模型上下文解析 我们首先来看一下 整个MCP的一个基本的一个流程&#xff0c;他解决的一个问题。我们回到这里&#xff0c;他解决的一个问题是什么呢&#xff1f;他解决这个问题就是你的大…

25.5.15

没有比水题更令人开心的事情了 典型的并查集题目&#xff0c;并查集分为并和查&#xff0c;并就是把有关系的父亲根结点设为同一个&#xff0c;查就是在成功构造后对其进行查询 查通过递归实现 if (x f[x])return x; return f[x] find(f[x]); 由于并查集的特点&#xff0…

低损耗高效能100G O Band DWDM 10km光模块 | 支持密集波分复用

目录 前言 一、产品概述 100G QSFP28 O Band DWDM 10km光模块核心特点包括&#xff1a; 二、为何选择O Band DWDM方案&#xff1f; 1.低色散损耗&#xff0c;传输更稳定 2.兼容性强 三、典型应用场景 1.数据中心互联&#xff08;DCI&#xff09; 2.企业园区/智慧城市组网 3.电信…