Build Guide

Table of Contents

  • 1 注意事项

  • 2 Prepare

  • 3 EDKII firmware

    • 3.1 build

    • 3.2 output

  • 4 GRUB OS loader

    • 4.1 Build

    • 4.2 output

  • 5 ROOTFS & bzImage

    • 5.1 build

    • 5.2 output

  • 6 cross compile toolchain

    • 6.1 build

    • 6.2 install

    • 6.3 usage

  • 7 flash image

    • 7.1 build

    • 7.2 output

  • 8 Define platform data

    • 8.1 build

  • 9 Programming Flash

1 注意事项

  • 默认工作目录: ~/workspace/galileo/

    $ tree -L 1
    .
    |-- gnu-efi-3.0
    |-- grub-legacy -> grub-legacy_5775f32a+v1.0.1
    |-- grub-legacy_5775f32a+v1.0.1
    |-- meta-clanton -> meta-clanton_v1.0.1
    |-- meta-clanton_v1.0.1
    |-- package
    |-- Quark_EDKII -> Quark_EDKII_v1.0.1
    |-- Quark_EDKII_v1.0.1
    |-- Quark_EDKII_v1.0.1-svn_externals.repo
    |-- spi-flash-tools -> spi-flash-tools_v1.0.1
    |-- spi-flash-tools_v1.0.1
    |-- sysimage -> sysimage_v1.0.1
    `-- sysimage_v1.0.1
  • 为避免编译环境的配置差异,编译每个包时最好 重新开启新的终端会话

2 Prepare

  • 下载BSP包到默认工作目录

    • Board_Support_Package_Sources_for_Intel_Quark_v1.0.1.7z 传送门

    • 解压

$ 7z x Board_Support_Package_Sources_for_Intel_Quark_v1.0.1.7z
  • 依赖包

$ sudo apt-get install build-essential gcc-multilib vim-common \p7zip-full git diffstat texinfo gawk chrpath file \make gcc g++ uuid-dev iasl patch \sed wget subversion git-core coreutils \unzip texi2html texinfo libsdl1.2-dev docbook-utils fop gawk \python-pysqlite2 diffstat make gcc build-essential xsltproc \g++ desktop-file-utils chrpath libgl1-mesa-dev libglu1-mesa-dev \autoconf automake groff libtool xterm libxml-parser-perl

3 EDKII firmware

3.1 build

$ tar -xvf package/Quark_EDKII_v1.0.1.tar.gz -C .$ cd Quark_EDKII_v1.0.1/$ ./svn_setup.py$ svn update$ cd CryptoPkg/Library/OpensslLib$ wget http://www.openssl.org/source/openssl-0.9.8w.tar.gz$ tar -xvf openssl-0.9.8w.tar.gz$ cd openssl-0.9.8w$ patch -p0 -i ../EDKII_openssl-0.9.8w.patch$ cd ..$ chmod +x Install.sh$ ./Install.sh$ cd ../../../$ gcc -v $ ./buildallconfigs.sh GCC46 QuarkPlatform

3.2 output

The build output can be found in the following directories:

  • build/QuarkPlatform/<Config>/<Target>_<Tools>/FV/FlashModules/

    • Contains EDKII binary modules

  • Build/QuarkPlatform/<Config>/<Target>_<Tools>/FV/Applications/

    • Contains UEFI shell applications, including CapsuleApp.efi

  • where:

    • <Config> = PLAIN | SECURE

    • <Target> = DEBUG | RELEASE

    • <Tools> = GCC43 | GCC44 | GCC45 | GCC46 | GCC47

4 GRUB OS loader

4.1 Build

$ wget http://sourceforge.net/projects/gnu-efi/files/gnu-efi_3.0v.orig.tar.gz$ tar -xvf gnu-efi*$ cd gnu-efi*/gnuefi$ make ARCH="ia32"$ cd -$ tar -xvf grub-legacy_*.tar.gz $ cd grub-legacy_* $ ./gitsetup.py $ cd work $ autoreconf --install $ export CC4GRUB='gcc -m32 -march=i586 -fno-stack-protector' $ export GNUEFI_LIBDIR=~/workspace/galileo/gnu-efi-3.0/gnuefi/$ CC="${CC4GRUB}" ./configure-quark.sh $ make

4.2 output

  • work/efi/grub.efi

5 ROOTFS & bzImage

5.1 build

$ tar -xvf meta-clanton*.tar.gz $ cd meta-clanton* $ ./setup.sh $ source poky/oe-init-build-env yocto_build$ bitbake image-spi-galileo

5.2 output

The output of the build process is found in ./tmp/deploy/images/ and includes the following files:

  • image-spi-clanton.cpio.gz

  • image-spi-clanton.cpio.lzma

  • bzImage

  • grub.efi

6 cross compile toolchain

6.1 build

$ source poky/oe-init-build-env yocto_build$ bitbake image-spi-galileo -c populate_sdk

6.2 install

$ ./tmp/deploy/sdk/clanton-tiny-uclibc-x86_64-i586-toolchain-1.4.2.sh

6.3 usage

$ source /opt/clanton-tiny/1.4.2/environment-setup-i586-poky-linux-uclibc$ ${CC} myfile.c -o myfile

7 flash image

7.1 build

$ tar -xvf sysimage_*.tar.gz$ tar -xvf spi-flash-tools*.tar.gz$ ./sysimage/create-symlinks.sh$ cd sysimage/sysimage.CP-8M-debug# modify the layout.conf file in the [Ramdisk] section
# from image-spi-clanton.cpio.lzma to image-spi-galileo-clanton.cpio.lzma$ ../../spi-flash-tools*/Makefile

7.2 output

  • Flash-missingPDAT.cap - standard capsule file.

  • Flash-missingPDAT.bin - flash file with no platform data.

  • FVMAIN.fv – board-specific recovery file

8 Define platform data

8.1 build

  • 修改platform-data配置文件

$ vim spi-flash-tools/platform-data/sample-platform-data.ini

参考下面的例子修改配置文件:

  [Platform Type]id=1desc=PlatformIDdata.type=hex.uint16# ClantonPeak 2, KipsBay 3, CrossHill 4, ClantonHill 5, KipsBay-fabD 6 data.value=6# WARNING: the MRC parameters MUST match the platformID used above[Mrc Params]id=6ver=1desc=MrcParamsdata.type=file#data.value=MRC/clantonpeak.v1.bin#data.value=MRC/kipsbay.v1.bin#data.value=MRC/crosshill.v1.bin#data.value=MRC/clantonhill.v1.bindata.value=MRC/kipsbay-fabD.v1.bin[MAC address 0]id=3desc=1st MACdata.type=hex.stringdata.value=001320FDF4F2 #unique MAC address of your device[MAC address 1]id=4desc=2nd MAC
data.type=hex.string
data.value=02FFFFFFFF01
  • 生成 spi-flash 镜像

$ cd spi-flash-tools/platform-data/$ ./platform-data-patch.py -p sample-platform-data.ini \-i ../../sysimage_4M*/sysimage.CP-8M-release/Flash-missingPDAT.bin

9 Programming Flash

  • 将 CapsuleApp.efi 和 Flash-missingPDAT.cap 复制到U盘然后插入开发板USB接口

  • 上电,当出现下面的提示时按 F7 进入启动菜单

Press [Enter] to directly boot.
Press [F7]    to show boot menu options.
  • 选择 "UEFI Internal Shell"

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒          Please select boot device:           ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒UEFI Payload                                   ▒
▒Boot Device List                               ▒
▒UEFI Internal Shell                            ▒
▒UEFI Generic USB2.0-CRW 20090815198100000      ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒            and  to move selection             ▒
▒          ENTER to select boot device          ▒
▒                  ESC to exit                  ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
  • 随后输入 "fs0:"

EFI Shell version 2.31 [1.0]
Current running mode 1.1.2
Device mapping tablefs0     :Removable HardDisk - Alias hd11a0b blk0PciRoot(0x0)/Pci(0x14,0x4)/USB(0x0,0x0)/HD(1,MBR,0x00000000,0x2000,0xE6C000)blk0    :Removable HardDisk - Alias hd11a0b fs0PciRoot(0x0)/Pci(0x14,0x4)/USB(0x0,0x0)/HD(1,MBR,0x00000000,0x2000,0xE6C000)blk1    :Removable BlockDevice - Alias (null)PciRoot(0x0)/Pci(0x14,0x4)/USB(0x0,0x0)Press ESC in 1 seconds to skip startup.nsh, any other key to continue.Shell> fs0:
  • 输入命令 "CapsuleApp.efi Flash-missingPDAT.cap"

fs0:\> CapsuleApp.efi Flash-missingPDAT.cap

转载于:https://my.oschina.net/u/115346/blog/386041

Yocto on Quark X1000相关推荐

  1. QUARK的增强版C-QUARK问世,有效提升蛋白质结构从头预测精度

    2021年8月18日,密西根大学张阳教授团队在Nature Communications上发表论文"Improving fragment-based ab initio protein st ...

  2. yocto linux dns,yocto-sumo源码解析(一): o

    oe-init-build-env是yocto构建环境运行的第一个脚本,通过运行下面的命令: . oe-init-build-env build-arm64 即可对yocto项目进行构建,顾名思义,该 ...

  3. yocto中文环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 我所使用的yocto版本是1.5.1,系统默认的locale是en_US,并不包含中文环境.但是在实际编译的过程中不仅仅是中文 ...

  4. imx6 板卡移植官方yocto版本(2_定制系统)

    上一节中已经讲述了如何去构建编译环境,这一节讲一下如何定制专属于自己板卡的系统.1.配置linux内核官方repo下来的yocto项目里配置了多个内核可选,我们可以在yocto目录下/source/m ...

  5. imx6 板卡移植官方yocto版本(1_安装环境)

    玩imx6板卡也有两年了,之前由于各种原因(主要是懒),一直用的是官方的LTIB版本,这里必须要吐槽一下这个LTIB,各种错误百出,而且严重挑系统,硬是将我从CentOS阵营搞到Ubuntu社区.最近 ...

  6. Yocto的使用实例

    Yocto的使用实例 本文以往rootfs中添加一个软件包为例,阐述使用Yocto定制发行版的大致流程.  有关Yocto的功能和结构介绍,详见Yocto详解 1.开发环境构建 一般有两种情况:一种是 ...

  7. Yocto基本概念及介绍

    Yocto详解 参考:http://www.yoctoproject.org/docs/2.1/mega-manual/mega-manual.html#creating-a-general-laye ...

  8. linux在mak时候出现错误,在使用yocto构建linux映像时出现“memfd戋create的静态声明跟随非静态声明”错误...

    我正在使用 Yocto 建立系统 Ubuntu 18.04 主机.我正在遵循提供的步骤 here . 我正在为 Colibri iMX6ULL 模块上的计算机.但是,我的生成失败,它显示以下错误 de ...

  9. 根文件系统构建(Yocto方式)

    本章有独立的教程,请参考<[正点原子]I.MX6U Yocto 构建根文件系统V1.0.pdf>!

  10. Yocto Project - basic - 01 - Quick Start

    Yocto 是一个被广泛使用的操作系统,本节开始介绍: 文章的内容来自于Yocto的官方介绍文档. 1 简介 The Yocto Project is an open-source collabora ...

最新文章

  1. Learning to Rank 中Listwise关于ListNet算法讲解及实现
  2. [转]整理一些好的开源项目
  3. 对于 IE低版本不兼容问题的处理
  4. 算法:阶乘的五种算法
  5. leetcode - 931. 下降路径最小和
  6. 【博客项目】—用户修改功能(十一)
  7. 【MySQL】replace into 浅析之二
  8. geddy mysql_以ToDoList应用来学习Geddy
  9. 3步解决网盘限速,还能远程下载!
  10. android 检测cpu温度传感器,软件是如何测量手机CPU温度的?即使手机没有温度传感器...
  11. tf 设置多显卡_海美迪H7四代解码4k hdr局域网教程,用TF卡双启动libreELEC成功
  12. 秀米svg点击显示另一张图_时隔五年再用秀米,我发现了这个超强玩法
  13. python-ip端口扫描器
  14. latex打出 像小写l一样的字母
  15. TI高精度实验室-运算放大器-第十六节-全差分放大器
  16. 卷积神经网络 图像识别,卷积神经网络 图像处理
  17. 网络封包分析软件-wireshark
  18. 如何让我的应用自动填写短信验证码?
  19. 单线激光雷达与多线激光雷达
  20. ckeditor 工具栏配置

热门文章

  1. PS案例提升 【第1节】抠图--薄、透、露的朦胧美 案例二:扣取婚纱新娘
  2. 利用反射等离激元超表面的模拟光计算
  3. 基于无人机的目标检测平台——数据中转(安卓App)
  4. (总结)Web性能压力测试工具之Siege详解
  5. 35岁老年程序员的绝地翻身之路
  6. 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中
  7. 【2G模组Air202开发】Lua脚本编程实现MQTT协议连接Tlink平台(二)
  8. DBA-数据库管理员
  9. 计算机更改后怎么找不到桌面文件,电脑桌面的文件不见了怎么找回
  10. 京东无法登录显示服务器异常,京东账号异常怎么解决?方法介绍