意外发现有awboot能够代替uboot直接引导内核,体验了一下果断选择awboot,因为足够简洁,编译大小只有32k,和uboot接近1M的体量相比,简直是小而美,启动速度也比uboot快上不少,也能同时支持sd卡,spinand,spinorflash启动。
GitHub - szemzoa/awboot: small linux bootloader for Allwinner T113-S3small linux bootloader for Allwinner T113-S3. Contribute to szemzoa/awboot development by creating an account on GitHub.https://github.com/szemzoa/awboot

说起uboot不禁想起几年前路由器第三方固件盛行的时期,那时的路由器还没有很复杂的方案,第三方固件往往比官方固件更易用功能更丰富,买个普通路由器换颗flash,内存芯片刷个系统就能获得更丰富的功能体验,各种固件openwrt,Padavan,高格百花齐放,为了刷机方便,系统的uboot都要支持tftp,串口甚至web的文件传输接口,由此孕育而出了大名鼎鼎的Breed,仅仅为了更新固件更方便,不用spi flash编程器那么麻烦的烧写。而到了全志嵌入式这边,由于自带usb接口的BROM,使用sunxi-fel或者xfel烧写flash已足够方便,所以使用uboot更新固件的需求就不是那么大,况且全志的方案比路由器的方案定制性更高一些,没有通用的第三方固件可以刷,所以uboot的功能就完全成了摆设,让用户使用sunxi-fel更新固件都要比uboot更新固件更稳定更实用,消费者用户用不到,开发人员也不会去用,那uboot的1m大小,集成的各种usb,网络,屏幕驱动,环境变量,文件系统,设备树编辑等功能就显得格外多余。

awboot相比spl+uboot的区别就是少了一次跳转的过程,由BROM拉起的boot0拥有足足160kb的sram,足够编写执行引导kernel的代码,所以这何尝不是一种恰到好处。

传统spl+uboot启动流程
过程 实现(提供) Code位置 变量内存空间
BROM 全志官方编写,固化在cpu中 BROM(0x00-48k) SRAM
boot0 spl(<32k) SRAM(0x20000-32k) SRAM(0x20000-32k)
uboot uboot(200k-1M) DRAM(0x40000000-128M) DRAM(0x40000000-128M)
kernel Linux(3M-5M) DRAM(0x40000000-128M) DRAM(0x40000000-128M)
awboot启动流程
过程 实现(提供) Code位置 变量内存空间
BROM 全志官方编写,固化在cpu中 BROM(0x00-48k) SRAM
boot0 awboot(<128k) SRAM(0x20000-128k) SRAM(0x20000-160k)
kernel Linux(3M-5M) DRAM(0x40000000-128M) DRAM(0x40000000-128M)

下面是awboot的编译过程:
修改makefile中的CROSS_COMPILE编译器定义为arm-none-linux-gnueabihf,或者使用

make CROSS_COMPILE=arm-none-linux-gnueabihf

命令编译
如果不是git拉取的而是手动下载解压的源码,需要去除git编译目标,位于makefile line:49
出现DWORD重复定义的错误,删除lib\fatfs\integer.h中的DWORD定义
链接出现未定义函数__aeabi_unwind_cpp_pr0,makefile中添加编译选项CFLAGS += -lgcc_eh
链接出现未定义函数raise,在main.c中添加函数

int raise(void)
{return 0;
}

编译成功,出现awboot.bin等文件

在wsl下开发T113的主线linux(2)-编译awboot相关推荐

  1. Android Linux下开发环境搭建

    开发环境--这个没有要求你一定得在什么系统下开发,你对哪个环境熟悉就用哪个. 如果习惯Windows的话,那在Windows下开发:如果对Linux比较熟,那你就用Linux. 不过,话说回来,Lin ...

  2. Go语言 linux下开发 IDE -SpaceVim\NeoVim

    文章目录 Go语言 linux下开发 IDE -SpaceVim 一.NeoVim和SpaceVim区别 二.NeoVim 安装 NeoVim Neovim GitHub Copilot插件安装 常见 ...

  3. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的"linux-2.6.30.4_20100531.tar.bz2"源码包. 解压(天嵌默 ...

  4. 利用 Windows 子系统 Linux(WSL)开发 Python 环境搭建

    利用 Windows 子系统 Linux(WSL)开发 Python 一.启用适用于 Linux 的 Windows 子系统 二.安装 Linux 分发版 三.安装并配置 Visual Studio ...

  5. 荔枝派Zero | 全志V3s 开发教程(一) 烧录系统镜像的方法以及如何烧录主线Linux系统镜像

    荔枝派Zero | 全志V3s 开发教程(一) 荔枝派Zero的开发教程: http://zero.lichee.pro/系统开发/type.html 刚开始尝试编译Camdroid官方SDK,最终浪 ...

  6. linux与windows下开发,Linux 与 Windows下开发感受

    Linux 和 Windows环境下开发各有优点.以下Linux 下使用感受是在Ubuntu11.04,别的发行版还没试过. 至于各自的缺点,都可以通过各种方法,得到或多或少地解决.至于要花费多大的精 ...

  7. Linux下开发常用的CVS使用手册

    CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的.工作模式如下: CVS服务器(文件版本库) / | \ (版 本 同 步) / | \ 开发者1 ...

  8. 在Linux下开发多语言软件: Hello GetText!

    在Linux下开发多语言软件: Hello GetText! 转自:http://www.groad.net/bbs/read.php?tid-906.html 开发多语言软件是一件非常困难的事,各个 ...

  9. 在linux下搭建git环境,在linux下搭建git github开发环境

    在linux下搭建git github开发环境 github git linux 1.安装git sudo apt-getinstall git 2.Generating SSH keys 2.1.g ...

最新文章

  1. 安农大计算机调剂,2020年安徽农业大学硕士研究生调剂公告
  2. LeetCode 1551. 使数组中所有元素相等的最小操作数(等差数列)
  3. 马上开课 | 临床基因组学数据分析实战助力解析Case,快速发表文章
  4. 音视频开发(39)---语音增强
  5. python 对象(一分钟读懂)03
  6. NVisionXR_iOS教程五 —— 添加灯光渲染
  7. 无约束最优化(一) 最速下降法、Newton法、修正Newton法
  8. 来自平时工作中的css知识的积累---持续补充中
  9. deeplin显示安装空间不够_太实用了!这种冷门的显示器支架可帮了大忙了
  10. matlab 拟合保存函数,matlab如何拟合函数
  11. docker介绍与应用
  12. 3d打印英语文献_万华推出可3D打印PP粉末材料
  13. 3.2 发送请求参数
  14. opencv+python+OpenPose姿态实时识别
  15. 瑞尔IPO:一桩资本逼宫的上市计划
  16. AVCON6 系统管理平台 download.action 任意文件下载漏洞
  17. Deepin20安装和配置NVIDIA显卡驱动
  18. Java Web项目源代码|CRM客户关系管理系统项目实战(Struts2+Spring+Hibernate)解析+源代码+教程
  19. python爬虫抓网页的总结
  20. sql语句中as的意思是什么

热门文章

  1. 光学变焦:拍照手机的下一个卖点?
  2. 论文阅读:Sketching Image Gist:Human-Mimetic Hierarchical Scene Graph Generation(ECCV20)
  3. c#集合类的线程安全
  4. 统信UOS:打造中国人自己的操作系统
  5. wxFormBuilder添加wxToolBar报错cpp(963) in wxToolBar::Realize(): invalid tool button bitmap解决方案
  6. [经验教程]什么是年货节如何享受年货价及淘宝天猫京东2022年货节红包怎么领取使用年货节超级红包
  7. MethodInfo类的一般使用!
  8. 注册热键 RegisterHotKey
  9. Idea创建Git项目【并处理Push Rejected问题】
  10. 记一次spark任务调优过程