找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 4726|回复: 4

EV3从图形化编程到内核编译(五)

[复制链接]
发表于 2022-3-24 23:32:55 | 显示全部楼层 |阅读模式
工作做到这一步,已经和内核密切相关了。在这一节我主要说一下内核是如何编译的,关于内核的编译配置,详细的说明在如下网址
https://github.com/mindboards/ev3sources/wiki/Getting-Started
我这里主要说一下注意事项。
1. 安装ubuntu一定要安装32位的,不要安装64位的,ubuntu16即可,高版本除了界面炫酷一点没有任何好处,我第一次就是安装了64位的系统,然后在上面编译32的程序,各种各样的坑,让我填了半年,最后终于编译出来,还是各种问题不断。后来换成32位的系统立马问题消失了。
2. 如果不想改你电脑的系统,你可以安装一个U盘系统,也挺好用的,不过U盘一定要选3.0接口的U盘,2.0接口的U盘系统慢的不能忍受。
上面两步走对了了之后,基本你就可以愉快的编译了,但是并不代表没有问题。
/projects/lms2012/open_first/执行make如下目标
Execute "make TARGET" where TARGET is:
lms2012: to build the lms2012 program and its libraries
modules: to build lms2012 kernel modules
programs: to build bytecode programs and their data files
kernel: to build Linux kernel
u-boot: to build u-Boot
doc: to build documentation
make doc 编译生成帮助说明,你编译时碰到的问题一般能在这里找到答案。
建议首先阅读readme.txt文件
make u-boot 编译嵌入式内核加载程序
make kernel 编译嵌入式linux内核。
make  programs 这个我真不知道编译出什么有用的东西,应该是操作系统用的基本程序吧。
make modules 编译驱动,要是想制作乐高兼容设备,可以在这个上面做工作,乐高的硬件定义。当然,自定义算法程序也可以在这里嵌入。
make  lms2012  编译主程序,这就是前面说的那个微操作系统了,所有的*.rbf通过它处理。
驱动、LINUX内核,lms2012工程,以及运行程序*.rbf的关系如下图:

内核以及操作系统的结构.png
make kernel时可能会报出如下错误
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
起初一头雾水,仔细看了错误提示后发现问题出现在如下文件中,估计是遗传问题/home/book/projects/extra/linux-03.20.00.13/kernel/timeconst.pl
在文件中 373行的
if (!defined(@val)) {
改为if (!@val) {
即可编译通过。
编译后执行文件组装脚本即可生成对应的内核二进制文件。组装脚本主要是将以下三个二进制文件组装成一个二进制文件。
0x0             uBoot         
0x50000          uImage        linux内核文件
0x250000           EV3.cramfs.bin        cramfs映像
组装完成之后的文件即为你经常更新的固件,命名为 EV3-image.*.bin,其中的*为一个时间标签,此内核即可下装到EV3主机当中,当然此固件也可以分解为上面三个文件,并且我已经提供了分解固件的程序和源代码Extract_uImage.zip,当然需要在linux操作系统上运行和编译。编译软eclipse
将固件下载到EV3主机当中,开机运行,听到嘀的一声,是不是突然有种做上帝的感觉。当然也有可能更新固件失败,导致破坏了一个旧世界,又没有创造新世界。不过也不要着急急,网上有很详细的解决方案,照着做一下,你就会有拯救整个世界的感觉。
EV3从图形化编程到内核编译的思路到这里基本就讲的差不多了,关键是要实践,实践过程中肯定会碰到各种各样的问题,不要担心,因为问题使人进步,但我还是祝你好运!

附固件分解程序下载地址
链接:https://pan.baidu.com/s/1kas53edBp44qB_wgrzqGDw?pwd=euhg

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2022-3-25 08:19:45 | 显示全部楼层
这就是一套完整的嵌入式linux开发配置流程。流程走通后就可以随意移植自己想要的驱动模块了,比如界面的QT,wifi等,畅游在开源的世界里了。再在电脑上搭建一个交叉编译环境,用EV3explorer上传,完美!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2022-3-25 22:14:51 | 显示全部楼层
语音控制开关 发表于 2022-3-25 08:19
这就是一套完整的嵌入式linux开发配置流程。流程走通后就可以随意移植自己想要的驱动模块了,比如界面的QT ...

玩到这里,基本上乐高所有的帮助文档都用上了,关键他们提供的文档还比较全面,也把乐高从一个小孩子的玩具变成大人可使用的开发平台!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-27 15:22:21 | 显示全部楼层
非常佩服楼上两位,圈内能静下心来深入搞的真的没几个人。文章保存了,准备细细研读。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2022-3-28 08:26:04 | 显示全部楼层
IT_Buddhist 发表于 2022-3-25 22:14
玩到这里,基本上乐高所有的帮助文档都用上了,关键他们提供的文档还比较全面,也把乐高从一个小孩子的玩 ...

MIT那伙人做的产品是牛逼,高度比较高。基本这就是成人玩具了。你这一系列教程非常好,我之前学做没时间学,我发现能玩到这程度的人太少了,感觉曲高和寡。现在你引路了,有时间我也要搞一下试试!
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-11-22 22:21 , Processed in 0.179272 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表