Chromium EC框架探索 1.1 开发环境搭建
1.1 开发环境搭建
本节参考官方文档getting started building ec images quickly编写本节介绍搭建ec开发环境的两种方式,后一种对于绝大多数人而言是不必要的。
首先,你得有个Linux
- 毫不意外地,这样一个开源项目需要在Linux环境中构建;也同样毫不意外地,大概会有很多人直接被这个需求劝退(
- 在你因认为浪费了阅读前两节的时间而愤然准备右上角之前,也许可以考虑用MinGw或者WSL抢救一下,因为编译只需要CLI就够了,至于会不会有兼容性等玄学问题,
首先我并没有试过.jpg( - Google官方推荐的Linux版本是Ubuntu 16.04(这个上古版本在一个上古文档里被提及,我不确定现在还是否有效),我在Debian testing(4.20)上测试可以无问题工作
- 当然在Linux上交叉编译少不了一堆的依赖,对于Debian这样初始比较纯净的系统更是如此。希望你对apt还比较熟悉以解决可能出现的玄学问题(
快速开始,最简开发环境
- 本段指导你如何最快地准备好一个基础的开发环境,这个环境可以编译出绝大多数的EC二进制
- 首先执行以下指令安装必要的依赖
- TIPS:若你还没有安装aptitude,可以把下面的
aptitude
全换成apt-get
,或者sudo apt-get install aptitude
- TIPSx2:如果你使用的不是Debian系发行版,你当然没法使用apt包管理系统!
实际上我连其他发行版上是否有这些包都不太确定,所以只好请非Debian系发行版用户自求多福了 sudo aptitude update
sudo aptitude install git libftdi-dev libusb-dev libncurses5-dev gcc-arm-none-eabi
sudo aptitude install repo pkg-config gawk
- 当然由于环境差异,可能上面的命令不能修补所有必要的依赖。你可能需要根据错误输出来自己进行一些修补
- 你还需要一个coreboot-sdk来获得arm-eabi-gcc的支持,很可惜这个sdk只能通过执行下一段的操作得到
- 预料到读完上一行会让你暗骂我坑爹,所以我把自己配置好的coreboot-sdk打包成了zip:v5yp
- 解压得到cross-sdk这个文件夹后,
sudo mv ./cross-sdk /opt
以将其移动到根文件系统的opt目录下 - 当然你还需要整个EC框架的源码,
除非你想虚空编译选一个你心仪的工程目录,然后git clone https://github.com/coreboot/chrome-ec.git
- 如果你运气够好,进入刚刚clone下来的ec目录,执行
make BOARD=eve
,你会在终端打印出的最后一行看到
*** 82336 bytes in flash and 224 bytes in RAM still available on eve RO ****
*** 82688 bytes in flash and 224 bytes in RAM still available on eve RW ****
,而不是什么奇怪的报错 - 现在你可以在./build/eve下找到刚刚编译出来的二进制了,来之不易!然而这并没有什么卵用,你只是编译出了和你无关的代码而已
- 但为了让以后你写的真正有用的代码可以运行,你会一次次重复刚才的编译过程
- 顺带一提,在
make
指令后加上-j$number of cores on your workstatsion
可以提高编译速度。例如你的cpu是4c8t的,你就可以骄傲地加一个-j8(
利用ChromiumOS chroot完整构建EC
- TIPS:除非在最简开发环境下编译出现了依赖问题,而你认为这个依赖仅存在于ChromiumOS中,否则构建一个ChromiumOS chroot进行EC开发是完全不必要的
- 写到这我发现第一段的标题得改成“首先你得懂Linux”
为了防止这样会劝退更多的人我还是没去改(- 作为Chromebook固件的一部分,毫不意外地EC本来应该在chromeOS环境下构建
- 当然为了写个嵌入式程序还要新装一个系统未免也太魔幻了,显然Chromebook团队也是这么想的,于是他们通过chroot提供了一个模拟chromiumOS环境的方法
- TIPSx2:从零开始构建chromiumOS chroot对于大多数人来说将会是漫长而煎熬,甚至根本无法完成的
- TIPSx2continue:所以我也准备了一个构建好的chroot供你直接下载:现在你可以跳到后一步查看如何进入chroot
- TIPSx3:如果看到这里也不能阻止你执意自己构建chroot,那么原谅我给你最后一击:如果你没有bash下也有效的全局代理或者其他能访问到某不存在网站的骚操作,请直接放弃
- 按Chromium OS Developer's Guide构建Chromium OS chroot
- 构建完成或者下载并解压好我提供的chroot后,进入目录下执行
./chromite/bin/cros_sdk
- 将$board替换为需要编译的工程,如eve,执行
cd ~/trunk/src/platform/ec; make BOARD=$board -j
cd /build/$board
,现在你可以看到编译出来的二进制
Chromium EC框架探索 1.1 开发环境搭建的更多相关文章
- Flask框架的学习与实战(一):开发环境搭建
Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2.很多功能的实现都参考了django框架.由于项目需要,在 ...
- Spring框架入门之开发环境搭建(MyEclipse2017平台)
基于MyEclipse2017平台搭建Spring开发环境,这里MyEclipse已将Spring集成好了,我们只需要做一简单配置即可 一.环境配置 OS:Windows7 64位 IDE工具:MyE ...
- Guns(开源后台管理系统框架)实战(一)——开发环境搭建
1. 开发环境搭建 1.1. 开发环境要求 1.2. 配置Maven 1.3. 配置MySQL 1.4. Git克隆项目 1.5. Eclipse导入系统 2. 小结 3. 参考引用 1. 开发环境搭 ...
- cozmo 入坑日记及开发环境搭建
前几日,朋友在群里发了一个机器人的小视频,视频里机器人可以对话,可以推箱子,开心以后会哈哈大笑,非常有趣. 详细了解里一下,这是个叫 cozmo 的智能机器人,可以配合 SDK 用 python 编程 ...
- IntelliJ IDEA安装及jsp开发环境搭建
一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...
- TODO:小程序开发环境搭建
TODO:小程序开发环境搭建 1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 ...
- Cordova+ionic 开发hybird App --- 开发环境搭建
Cordova 开发hybird App 开发环境搭建 一.一些基础概念: Ant : 简单说来可以这么理解,如果你用记事本写JAVA程序,然后在cmd里输入javac命令编译它,但是有一天你发现每次 ...
- (转)PhoneGap开发环境搭建
(原)http://www.cnblogs.com/Random/archive/2011/12/28/2305398.html PhoneGap开发环境搭建 项目中要用PhoneGap开发,了解 ...
- 基于WDF的PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建
原文出处:http://www.cnblogs.com/jacklu/p/4619110.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...
随机推荐
- ERROR 1129 (00000) Host ‘XXXXXX’ is blocked because of many connection errors; unblock with ‘mysqlad
1.今天早上由于公司网络带宽达到上限,导致多台web服务器连接mysql服务器超时.后来情况好转后,连接数据库服务器出现如下错误. Host '*' is blocked because of man ...
- xshell 常用命令1
date命令 date命令是显示或设置系统时间与日期. 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作.延时通常用于脚本执行过程中提供一段等待的时间.日期可以以多种格 ...
- 从Note 5看三星大招 究竟能不能秒杀iPhone
5看三星大招 究竟能不能秒杀iPhone" title="从Note 5看三星大招 究竟能不能秒杀iPhone"> 从当年HTC发布第一代Android手机G1开始 ...
- LSTM 句子相似度分析
使用句子中出现单词的Vector加权平均进行文本相似度分析虽然简单,但也有比较明显的缺点:没有考虑词序且词向量区别不明确.如下面两个句子: "北京的首都是中国"与"中国的 ...
- 阿里云ESC学生服务器搭建springboot项目生产环境(Mysql+JDK)不需要上传安装包
嗯,之前服务器被挖矿的病毒弄的登录不进去了,所以联系了阿里云客服,提交工单,最后建议重置,所以我就重置了, 嗯,学习经验,docker如果懂的不是太多,不要随便云部署,都给别人挖矿了. Mysql ...
- 一天速成Python教程
一.Python基础 Python是对象有类型,变量无类型的动态类型语言,追求简单优雅易读.可以在终端中逐行运行,也可以编写成大型的面向对象的工程.在开始写之前,注意Python 2.X中,开头要写上 ...
- Pandorabox固件路由器上申请Let's Encrypt证书,为内网里的多个web服务提供SSL支持
对于家中宽带有公网IP的用户,有时我们需要将路由器内部网络的某些web服务通过端口转发暴露到外网(例如NAS远程访问),但HTTP是明文传输,有被监听的风险:如果在NAS上使用自签名证书,再端口转发, ...
- Kubernetes-PersistentVolumeClaim(PVC)介绍
1 PVC介绍 PVC是用户层面,作为对存储资源的需求申请,主要包括了存储空间大小.访问模式.PV的选择条件.存储类别等信息的设置. 2 PVC的参数详解 2.1 PVC的yaml模板 apiVe ...
- 今夜我懂了Lambda表达式_解析
现在时间午夜十一点~ 此刻的我血脉喷张,异常兴奋:因为专注得学习了一把java,在深入集合的过程中发现好多套路配合Lambda表达式真的是搜椅子,so开了个分支,决定从"只认得", ...
- vue 带参数的跳转-完成一个功能之后 之后需要深思,否则还会忘记
我要写详细点,否则下次很容易忘记 写了一个页面,这个页面里面添加了 很多a 标签,跳转都是同一个页面,内容不一样,方法 首先 路由 设定好 routes:[ { path:'/aaa', name:' ...