全志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.pswp.cn/bicheng/81114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81114.shtml
英文地址,請注明出處:http://en.pswp.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.電信…