荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

2023-05-16

首先是荔枝派的官方文档,写的不是很细,应当说我们必须明确几点:

  • 出厂时 SPI Flash 自带了一个 U-Boot+Linux Kernel(出厂的时候可能烧过了),可直接拿来用。如果希望自己烧固件,才需要后续步骤
  • 必须使用移植版的 sunxi-tools 工具,而非官方版
  • 必须使用移植版的 U-Boot 工具,而非官方版
  • 可以使用最新的主线 Linux 内核
  • 荔枝派 Nano 没有 reset 按钮,且使用的是片内 DDR1 DRAM,大小为 32MB,外部 SPI Flash 为 16MB。芯片架构 ARM926EJ-S

编译 U-Boot

据说是因为 Winbond 涨价了,所以板子上的 SPI Flash 换成了大陆产 xt25f128,需要修改 U-Boot 的 arch/arm/dts/suniv-f1c100s-licheepi-nano.dts

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins_a>;
	status = "okay";

	flash@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "winbond,xt25f128", "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <40000000>;
	};
};

然后修改 drivers/mtd/spi/spi_flash_ids.c,在 Winbond 节加入:

{"xt25f128",       INFO(0x0b4018, 0x0, 64*1024,    256,    RD_FULL | WR_QPP | SECT_4K) },

移植版的 U-Boot 没有做这个步骤,也没有任何说明,这不是故意坑么?

编译 Busybox

参考 用BusyBox制作Linux最小系统,然后要创建 jffs2 文件系统,因为我使用 initramfs,所以就不做这一步。

编译 Linux

我选用主线 Linux。需要启用如下选项(不会吧,你该不会不知道可以用 / 键进行搜索吧?):

  • CONFIG_ARCH_MULTI_V5:选择 ARM v5,选择了这个以后才能选 F1C100s
  • CONFIG_ARCH_SUNXI:选择全志 SoCs
  • CONFIG_MACH_SUNIV:选择了这个以后才能选 F1C100s
  • CONFIG_AEABI:如果出现错误 Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 就是因为这个没有选中
  • CONFIG_LOCALVERSION:这个选项用来设置内核启动时显示的额外版本信息,你可以设置为你的名字,看上去像是你的专用版 Linux
  • CONFIG_BLK_DEV_INITRD:启用 initrd/initramfs,这样就可以先不弄 jffs2,而是使用 ramfs
  • CONFIG_INITRAMFS_SOURCE:指向 busybox 生成的目录
  • CONFIG_SPI:启用 SPI
  • CONFIG_MTD:启用 MTD
  • CONFIG_MTD_SPI_NOR:启用 SPI NOR Flash
  • CONFIG_MTD_SPI_NOR_USE_4K_SECTORS:启用 4K 扇区
  • CONFIG_MISC_FILESYSTEMS:启用 JFFS2
  • CONFIG_JFFS2_FS:启用 JFFS2

其他选项不知道就默认就行。编译的时候记得加 -j8 启用 8 线程编译加速。

烧录

烧录 U-Boot 到 SPI Flash 是必须的,至于引导 Linux,可以把 Linux 映像放到 SD、TF 卡中,也可以直接烧到 SPI Flash 中。这里我采用后者。为此,我们准备一个打包脚本(因为我这里使用 initramfs,所以就不需要额外 rootfs 了):

dd if=/dev/zero of=firmware.bin bs=1M count=16 2>/dev/null
printf "create firmware.bin, size 0x%04x\n" $[1024*1024*16]

echo "+======================+"
echo "| Bootloader: 1MB"
echo "+----------------------+"
echo "| dtb:        32KB"
echo "+----------------------+"
echo "| zImage:     8MB"
echo "+----------------------+"
echo "| rootfs:     .MB"
echo "+======================+"

dd if=u-boot/u-boot-sunxi-with-spl.bin of=firmware.bin bs=1k conv=notrunc 2>/dev/null
printf "uboot: 0x0000, size 0x%04x\n" $[1024*1024]

dd if=linux/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb of=firmware.bin bs=1k seek=1024 conv=notrunc 2>/dev/null
printf "dtb:   0x%04x, size 0x%04x\n" $[1024*1024] $[32*1024]

dd if=linux/arch/arm/boot/zImage of=firmware.bin bs=1k seek=$[1024+32] conv=notrunc 2>/dev/null
printf "zImage: 0x%04x, size 0x%04x\n" $[1024*(1024+32)] $[1024*1024*8]

#dd if=jffs2.img of=firmware.bin bs=1K seek=$((1024+32+8192)) conv=notrunc 2>/dev/null
printf "rootfs: 0x%04x, size 0x%04x\n" $[1024*(1024+32+1024*8)] $[1024*(1024*16 - 1024*9 - 32)]

echo "sf probe 0 50000000 0; sf erase 0 0x1000000; reset"
echo "sudo sunxi-fel -p spiflash-write 0 firmware.bin"

注意这个 dtb 文件应该使用 linux 编译目标 dtbs 生成,而不应该使用 U-Boot 所生成的 dtb 文件。

然后烧录。根据官方的文档,先把 SPI Flash 的 CS 脚拉低,然后芯片进入 FEL 模式后进行操作。测试发现,sunxi-tools 的烧录命令似乎没有进行 erase,导致我后面烧录的时候,里面的数据根本没有变化

因此我们在烧新的 U-Boot 前,应该先进入出厂时的 U-Boot ,用以下命令清空 SPI Flash 的 16MB 空间(注意 0 和 50000000之间没有冒号,别被官方文档骗了):

sf probe 0 50000000 0
sf erase 0 0x1000000
reset

重新上电,由于没有 SPL 头部,芯片会自动进入 FEL 模式。然后就可以使用 sunxi-tools 来烧写了。

这么隐蔽的坑,那感觉,谁试谁知道

引导 Kernel

重新上电,在 U-Boot 中执行:

setenv bootargs 'console=tty0 console=ttyS0,115200n8'
sf probe 0 50000000 0
sf read 0x80C00000 0x100000 0x8000
sf read 0x80008000 0x108000 0x800000
bootz 0x80008000 - 0x80C00000

如果你的内核映像在 SD 卡中:

setenv bootargs 'console=tty0 console=ttyS0,115200n8'
load mmc 0:1 0x80C00000 suniv-f1c100s-licheepi-nano.dtb
load mmc 0:1 0x80008000 zImage
bootz 0x80008000 - 0x80C00000

最终效果

在这里插入图片描述在这里插入图片描述就是在用户登录那里总是有问题,明明已经关闭密码了却还提示密码错误,设置一个有效密码仍然是密码错误,见鬼。最后索性不需要登录了。

自己画板子

https://www.thirtythreeforty.net/posts/2019/12/my-business-card-runs-linux/#source-code

源代码:

https://github.com/thirtythreeforty/businesscard-linux

电路原理图:

https://www.thirtythreeforty.net/posts/2019/12/my-business-card-runs-linux/businesscard.pdf

FC100s 技术文档:

https://www.thirtythreeforty.net/media/F1C100s_Datasheet_V1.0.pdf

https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记 的相关文章

  • 百度网盘限速下载,PanDownload简直逆天

    目前来说PanDownload依然是突破限速的首选软件 xff0c 虽然有时候也会出现波动 xff0c 但至少比管家要强太多太多 pandownload官网 PanDownload是一款免费软件 xff0c 请至官网下载 http pand
  • win10+TeamVIew+花生壳 0元实现 远程开机教程附带截图超详细 已实践成功

    win10 43 TeamVIew 43 花生壳 实现远程开机 最近dnf出了累计在线时长送装备的活动 xff0c 公司电脑挂游戏又不太好 xff0c 云主机的实现成本太高 xff0c 于是有了远程自己家里的电脑挂游戏的想法 xff0c 但
  • 我安装archlinux的过程总结

    根据网上的文章 Archlinux 2015 07 01 和 Windows7 双系统 安装教程 改编 2017 11 18 Archlinux 2015 07 01 和 Windows7 双系统 安装教程 提前在windows7下给Arc
  • 使用Gradle发布Android开源项目到JCenter

    这里介绍一下 xff0c 如何使用Gradle发布到jcenter 注册 先到https bintray com注册一个账号 配置账号 我们需要配置一下BINTRAY USER及BINTRAY KEY两个属性 BINTRAY USER即你注
  • android中activity和fragment之间的跳转问题

    一 描述 xff1a 现MainActivity中有Fragment1 Fragemnt2 Fragment3 Fragment4 xff0c 还有一个Activity2和一个按钮 二 需求 xff1a 1 从Fragment2跳转至Act
  • 苹果新发布的Apple M1 SoC处理器,对比25年前第一代ARM1,性能强了多少?

    来源 xff1a Andrei xff0c 整理 xff1a 晓宇 微信公众号 xff1a 芯片之家 xff08 ID xff1a chiphome dy xff09 2020年11月10日 xff0c 苹果发布了他们全新的MacBook系
  • 在Windows平台使用python3调用dronekit并仿真

    实验平台 Windows 10Python3 7dronekit python 2 9 2 本文使用上述环境进行实验 dronekit python官方文档1的Introduction Release Notes部分更新到dronekit
  • 计算机概论复习:知识大全

    为期末考试复习的笔记 xff0c 参考了各种资料 1 计算机的定义 1 1计算机系统的组成 1 由硬件和软件组成 xff1b 2 软件 xff1a 应用软件 办公自动化软件 财务管理软件 xff08 记法 xff1a 有专门应用语境的软件
  • SpringMVC常用注解解释

    SpringMVC常用注解详解 1 ResquestParam 作用 xff1a 把请求中指定名称的参数给控制器中的形参赋值 属性 xff1a value xff1a 请求参数中的名称 required xff1a 请求参数中是否必须提供此
  • 约瑟夫环(链表法,公式法)

    约瑟夫环作为一个数学问题 xff0c 它的代码实现方式有很多 xff0c 比如循环链表 xff0c 公式解决或者动态规划 xff0c 之前参考资料也有用递归解决的 Anyway xff0c 这些都是解决约瑟夫环问题很有效的方法 这里总结两种
  • C/C++对Unicode编码的处理

    http blog chinaunix net uid 23414687 id 2425175 html MultiByteToWideChar CP ACP 0 p 1 tUni 1 调用windows的API函数将中文内码转换成 UNI
  • Android8.0 user版本adb 的log输出到串口中

    我们在调试adb时不能使用logcat xff0c 这个时候我们需要把adb的log输出到串口 xff0c init就能实现 xff0c 我们仿造init的代码 xff0c 在adbd的main函数中调用了如下函数InitKernelLog
  • 爬虫——动作链、xpath、打码平台使用

    系列文章目录 第一章 爬虫 爬虫初识 requests模块 第二章 代理搭建 爬取视频网站 爬取新闻 BeautifulSoup4介绍 bs4 遍历文档树 bs4搜索文档树 bs4使用选择器 第三章 selenium基本使用 无界面浏览器
  • 2022-11-02 | Tomcat9.0安装及配置教程(win10) by YUNER

    0 参考博客链接 xff1a Tomcat 9安装配置教程 https blog csdn net u011118751 article details 105394464 Tomcat9 0安装与配置 https blog csdn ne
  • 敏捷Scrum指南三:Scrum角色之SM(ScrumMaster)

    角色概述 SM主要负责帮助每个人理解并乐于接受Scrum的价值观 原则和实践 对PO和Dev Team来说 xff0c SM履行的是教练的职责 对团队的Scrum工作流来说 xff0c SM履行的是过程领导的职责 职责 Scrum教练 是S
  • 用photoshop制作指定尺寸的证件照的方法

    有些朋友会遇到一些提交指定尺寸的证件照的要求 xff0c 例如照片的宽 高 xff0c 图中头部的长度或者宽度 今天我也遇到了这个要求 xff0c 自己尝试了几种做法 现在把我觉得最简单的一个方法和大家分享 例如要求图片尺寸为70mm 50
  • 什么是高性能计算,涉及哪些技术和知识呢?

    什么是高性能计算 xff0c 涉及哪些技术和知识呢 xff1f 高性能计算 High performance computing 指通常使用很多处理器 作为单个机器的一部分 或者某一集群中组织的几台计算机 作为单个计算资源操作 的计算系统和
  • Android中批处理drawable-xxx目录中图片资源的那些事儿

    看到这个题目的时候 xff0c 我想多少有人会觉得诧异 是的 xff0c 当我在编程中需要通过代码的方式控制27张图片像幻灯片一样按固定时间顺序播放的时候 xff0c 我想把自己是如何做的记录下来和大家一起分享 xff0c 同时也是为了对抗
  • 博饼API接口调试,谁能帮忙搞小

    https api pancakeswap info api v2 tokens 给了接口 xff0c 没有接口文档 xff0c 不会调试 xff0c 谁能帮忙
  • Android 9.0 安装包解析错误

    Android studio打包的debug和release 包 安装到android9 0版本 提示安装包解析错误 xff0c 因为之前在 manifest文件里面为了解决androidx冲突问题 xff0c 在application加入

随机推荐

  • 报错:Gradle sync failed: SSL peer shut down incorrectly

    问题解决 xff1a 把gradle wapper文件打开 xff0c distributionUrl 61 https services gradle org distributions gradle 4 1 all zip 把https
  • Android 导入项目提示 Could not find method buildFeatures()for arguments xxx on extension ‘android‘on...

    报错 xff1a 点击Open File定位到 xff1a 改成下面的写法 就不报错了 dataBinding enabled 61 true gradle版本不一样 xff0c 写法就不一样而已 xff5e 对应自己的版本
  • Caused by: org.gradle.internal.resource.transport.http.HttpErrorStatusCodeException: Could not GET ‘

    Caused by org gradle internal resource transport http HttpErrorStatusCodeException Could not GET 39 https artifacts appl
  • recycler recyclerview snaphelper

    转载 xff1a 让你明明白白的使用RecyclerView SnapHelper详解 简书
  • iOS用swift打开appstore的主页或者评分界面

    如果要在appstore打开的话 xff0c 要知道要打开的app的id xff0c 代码要用到这个id xff0c 可以在appstore查看 xff0c 复制链接等 xff0c 链接里面有id 打开app在APP Store的详情界面
  • Vue项目关闭esLint 代码爆红(红色波浪线)

    VueCli关闭eslint语法检查 通过vue cli创建的项目默认都勾选的eslint语法检查 xff0c 这对程序猿来说非常 34 不友好 34 xff08 如 xff1a 文件命名不规范 引用了文件未使用等都会爆红 xff09 默认
  • Xshell Ubuntu20.04.4 使用SSH root 登陆系统

    Xshell Ubuntu20 04 4 使用SSH root 登陆系统 前言 在使用xshell连接linux时 很多用户想直接用root连接 但是会报连接错误 明明自己输入的密码没错 但是就是连不上 这个可能是ssh的保护机制 毕竟ro
  • recycleView调用notifyDataSetChanged()失去焦点问题

    我的项目中 xff0c 在一个recycleView有一个EditText xff0c 里面输入内容的时候 xff0c 下面一个list列表匹配出数据 但是不像手机搜索联系人这样 xff0c EditText一直占有焦点 这个一旦匹配出数据
  • android Linphone SDK

    LinphoneLauncherActivity 是APP的入口组件 xff0c 在这个组件里 xff0c 它会启动LinphoneService这个后台服务 xff0c 然后不断地判断这个后台服务是否已经启动完毕 xff0c 如果已经启动
  • 安装应用提示与已安装应用签名不同

    出现这个情况 xff1a 1 如果你已经安装了 xff0c 就先卸载已经安装的应用再安装 xff1b 2 如果本地没有安装 xff0c 去文件管理中找与安装应用相同包名的文件夹删除 xff1b 3 以上都没问题的话 xff0c 你手机是不是
  • 使用Glide 设置ImageView 简单的圆形图片

    RequestOptions mRequestOptions 61 RequestOptions circleCropTransform 设置圆形图片 以下是额外设置一些配置 diskCacheStrategy DiskCacheStrat
  • 用 dism 合并与删除 wim 映像

    一 合并 假设 installA wim 有 3 个映像 xff0c installB wim 有 1 个映像 1 全部合并 将 installA wim 中的 3 个卷映像合并到 installB wim 中 xff0c 这样 insta
  • Manjaro XFCE桌面安装I3-wm

    运行两条命令 xff1a sudo pacman S i3 manjaro sudo pacman S i3 manjaro resolving dependencies looking for conflicting packages m
  • java学习一路总结

    1 源码包和jar包的区别 从spring网站down下最新的spring源码包spring framework 2 0 rc1 with dependencies zip 原以为直接放到工程里就可以用了 其实不然 真正要用到的是里面dis
  • 超级好看的windows终端美化教程

    mac使用强大的 oh my zsh 先上效果图 Powershell美化官方教程 官方教程比较简单 xff0c 可以设置图片 xff0c 模糊背景 xff0c 改变颜色 xff0c 不过可以作为oh my posh基础 如果不需要直接略过
  • LAMP源码编译安装之Apache

    LAMP源码编译安装之Apache 一 LAMP的基本架构概述1 LAMP架构2 各组件的主要作用如下 二 编译安装Apache httpd服务1 关闭防火墙 xff0c 将安装Apache所需软件包传到 opt目录下2 安装环境依赖包3
  • 算法

    从一个数组中找出 N 个数 xff0c 其和为 M 的所有可能 span class token comment 参数依次为目标数组 选取元素数目 目标和 span span class token keyword const span s
  • Android漏洞挖掘第三期:客户端完整性未校验

    引言 xff1a 每一期都有相同的内容部分 xff0c 主要为了让大家单独看一期依旧能看懂 xff01 xff01 xff01 0x01 APK文件 依然从APK文件开始说起 xff0c 相信大家看我之前的帖子 xff0c 已经知道APK文
  • 查看LIBC版本

    如果题目提供了 so文件 xff0c 可以尝试直接从 so文件中获取GLIBC的版本 strings so span class token operator span span class token function grep span
  • 荔枝派 Nano 全志 F1C100s 编译运行 Linux 笔记

    首先是荔枝派的官方文档 xff0c 写的不是很细 xff0c 应当说我们必须明确几点 xff1a 出厂时 SPI Flash 自带了一个 U Boot 43 Linux Kernel xff08 出厂的时候可能烧过了 xff09 xff0c