3      制作流程3.1   MINI-SD卡的准备

EV3 MINI-SD卡的启动需要按照如下的规范:

两个分区

第一个分区50M,文件系统是FAT,用于放置linux内核文件

第二个分区最好大于1G,文件系统是EXT3,用于放置linux根文件系统

具体的操作细节,可以参考如下的网页

[url=]http://www.linuxidc.com/Linux/2011-11/47797.htm[/url]3.2固件处理

从ev3source/lms2012/open_first/script/make_image.pl中分析出ev3固件的文件格式偏移文件说明

0x0uBootmini-sd不用

0x50000uImagelinux内核文件

0x250000EV3.cramfs.bincramfs映像

uImage处理

编写一个小程序将uImage从文件EV3 Firmware V1.06E.bin读出

将linux内核镜像写入mini-sd

mount /dev/sdb1 /mnt/d1          #加载mini-sd卡的fat分区cp uImage /mnt/d1                #拷贝内核镜像文件 umount /mnt/d1

cramfs映像处理

mount -t cramfs -o loop,offset=0x250000 "EV3 Firmware V1.06E.bin" /mnt/d2

目录/mnt/d2内容如下

将linux文件系统写入mini-sd

cd /mnt/d2 tar –zcvf /home/root/ev3.tgz *   #将EV3的文件系统打包

umount /mnt/d2 mount /dev/sdb2 /mnt/d2          #加载mini-sd卡的EXT3分区

cd /mnt/d2 tar –zxvf /home/root/ev3.tgz    #解压EV3文件系统

umount /mnt/d2

3.3   console线连接

杜邦线仅仅需要三根,红黄蓝

a      USB TO TTL上

红-GND

黄-RXD

蓝-TXD

b      NTX插座

c           连接图

ps: 原以为需要洞洞板做连接,插口回来后发现不需要,直接使用杜邦线就可以了。当然要小心点,工作时不要碰到就行。

3.4终端显示验证

接好线后,插入mini-sd卡,在mac/linux上面打开一个终端

执行cu -s 115200 -l /dev/cu.SLAB_USBtoUART

打开EV3电源,终端上会显示

EV3进入到官方操作界面,并且终端无响应。

3.5   启动WIFI

按照固件启动的流程,会直接进入到lms2012提供的界面中,而没有启动wifi,我们需要做如下的修改:

a.       修改mini-sd卡

关机,取出mini-sd卡,重新在linux上mount

b.       增加wifi脚本

在/mnt/d2/etc/init.d目录下增加一个可执行脚本wifi.sh,主要是加载无线网卡需要的内核驱动模块,以及启动WIFI,最后通过dhcpcd获得IP。内容如下

#!/bin/sh

echo "load modules compat"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/compat/compat.ko

echo "load modules cfg80211"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/net/wireless/cfg80211.ko

echo "load modules mac80211"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/net/mac80211/mac80211.ko

echo "load modules ath"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/ath/ath.ko

echo "load modules ath9k_hw"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko

echo "load modules ath9k_common"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/ath/ath9k/ath9k_common.ko

echo "load modules ath9k"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/ath/ath9k/ath9k.ko

echo "load modules ath9k_htc"

export FIRMWARE_DIRS="/lib/firmware"

/sbin/insmod /lib/modules/2.6.33-rc4/kernel/drivers/net/wireless/ath/ath9k/ath9k_htc.ko

echo "start wifi"

cd /home/root/lms2012/sys

./wpa_supplicant -B -c /etc/wpa_supplicant.conf -iwlan0

echo "requesting IP address"

udhcpc --retries=10 --now -i wlan0 -h ev3

d      将wifi.sh加入启动目录level5中

cd ../rc5.d

ln –s ../init.d/wifi.sh S40wifi

e     修改WIFI密码

修改/mnt/d2/etc/wpa_supplicant.conf

network={

ssid="Bella"

psk=dbc9c6cf6d4d8e9405842d2e4ab726f33f10de62c30254ff19512af0dca1bc0f

key_mgmt=WPA-PSK

proto=RSN

pairwise=CCMP,TKIP

group=CCMP

}

修改为自己wifi的ssid

使用wpa_passwd ssid passwd生成psk。注意,大小写敏感

f     删除rc5.d/S99lms,并卸载/mnt/d2

g     取出mini-sd,插入EV3,开机

如果一切顺利的话,终端的内容如下

另外,可以使用putty,telnet直接连接EV3的ip,192.168.100.10。当然为了后期方便,大家还可以把sshd(dropbear)加入到rc5.d中。

到此为止,目标A,B,C大功告成。

4遗留问题

目前shutdown命令还不能自动关机

5继续折腾之路

其他WIFI网卡的支持

需要使用源码来编译。可以参考[url=]http://icube-avr.unistra.fr/en/index.php/Hacking_the_Lego_EV3[/url]

控制EV3提供的外设

目前EV3的外设包括,马达,传感器等,会在后续的文章中涉及。

其他软件包的安装

主要采用交叉编译的方法,生成自己想要的软件。例如,gdb, strace, http server等,和常规的linux开发差异不大。

6. 附录

提取uImage文件的源码

#include

#include

#include

#include

int main()

{

int ifd,ofd;

int begin = 0x50000;

int end   = 0x249999;

struct stat st;

unsigned char* ptr;

char* fname ="EV3 Firmware V1.06E.bin";

char* ofile ="uImage";

ifd = open(fname,O_RDONLY);

if(ifd == -1)

return -1;

ofd = open(ofile,O_CREAT | O_TRUNC | O_RDWR,0664);

if(ofd == -1)

return -1;

fstat(ifd,&st);

ptr = mmap(NULL,st.st_size,PROT_READ,MAP_SHARED,ifd,0);

if(ptr == MAP_FAILED)

return -1;

while(ptr[end] == 0xFF && end > begin )

end--;

write(ofd,ptr+begin, end-begin+1);

munmap(ptr,st.st_size);

close(ofd);

close(ifd);

return 0;

}

ev3编码软件linux,利用官方固件搭建EV3自制系统相关推荐

  1. windows和Linux利用Python快速搭建一个网站

    windows和Linux利用Python快速搭建一个网站 一.windows 步骤1:安装Python3(自行百度) 步骤2:在cmd窗口输入ipconfig查看本机ip地址,IPV4那一行.如:1 ...

  2. 基于华硕路由器官方固件搭建个人Web服务器

    华硕路由器,今天我们要分享的干货是基于原厂固件搭建Web服务器,例如:个人博客. 网上有很多教程都是基于第三方固件来现象,并且需要第三方的运行环境,譬如Entware,optware,这里不需要,纯粹 ...

  3. linux最好用的ftp服务器软件,Linux平台下快速搭建FTP服务器

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是1个利用程序(A ...

  4. 利用官方工具重装电脑Windows10系统(含下载链接)(亲测有效)

    目录 废话不多说,让我们开始利用U盘重装windows10家庭版(×64) 一.U盘启动盘的制作: 二.利用U盘启动盘重装电脑系统: 三.重装系统后的基本设置: 微软官方Windows系统下载网址: ...

  5. win10利用开发者模式搭建ubuntu 双系统

    利用win10 搭建轻量级的ubuntu子系统用来做测试,后向服务器迁移避免诸多问题,下面开始吧! 1.启动设置面板 2.搜索"开发者设置" 3.启用 Linux 子系统组件 4. ...

  6. 利用宝塔linux面板+苹果CMS-----从0搭建一个电影网站(一)

    宝塔linux面板官网 苹果CMS官网 安装宝塔linux+创建一个网站 Centos安装脚本 yum install -y wget && wget -O install.sh ht ...

  7. 利用宝塔linux面板+苹果CMS搭建电影网站(二)网站的配置+电影资源的爬取上传

    在利用宝塔linux面板+苹果CMS-----从0搭建一个电影网站(一)里已经初始创建了一个电影网站的雏形 接下来需要对网站进行编辑修改上传电影资源 达到这一种效果; 网站修改编辑 进入网站后台 ip ...

  8. 利用官方的vue-cli脚手架来搭建Vue集成开发环境

    在利用vue-cli脚手架搭建vue集成环境之前,我们需要先安装nodejs的环境.如果在cmd中输入node --version和npm --version出现如下的版本信息,就说明安装已经成功了. ...

  9. 腾达ac5第三方固件_腾达Tenda 路由器型号:AC6__固件版本:V15.03.05.16_multi升级软件-官方固件...

    型号:AC6 腾达Tenda 路由器型号:AC6__固件版本:V15.03.05.16_multi升级软件-官方固件下载 固件厂商: 腾达Tenda [官方固件] 适用机型: 腾达Tenda AC6 ...

最新文章

  1. 深度学习中的核心知识
  2. Android系统的开机画面显示过程分析(8)
  3. xaml 的 intellisense失效的解决办法
  4. 1月Web服务器份额之争:仅Microsoft份额下降
  5. Linux信号量以及互斥体
  6. 换种方式实现3级联动
  7. Sublime Text3设置浏览器预览
  8. android+刷机文件,【技术】刷机脚本文件的修改
  9. Symbol Type Viewer Version 1.0.0.3 (beta) by Lionel d'Hauenens
  10. 渥太华大学计算机专业,渥太华大学计算机专业解析
  11. matlab从无到有系列(九):Simulink基础仿真详解(全网最全,从入门到放弃)
  12. 平均成绩是计算数学计算机英语三门,创建一个查询,计算并显示“学号”和“平均成绩”两个字段内容,其中平均成绩 是计算数学、计算机和英语_开卷宝...
  13. java ocr 表格票据识别_OCR表格票据识别技术。
  14. mysql5.7源码安装 简书_在CentOS7上编译安装MySQL 5.7.13步骤详解
  15. html语言下上标对齐,html常用标签基础
  16. Swift实现洗牌动画效果
  17. Svchost.exe占用内存过大解决
  18. 共模电感的仿真应用来了,满满的干货送给大家
  19. 人工神经网络与卷积神经网络区别与联系
  20. 深度学习入门_斋藤康毅_chapter23

热门文章

  1. python哪些模块用于数据分析_python数据解析模块之glom模块的使用(一)
  2. 云原生高可用技术体系的构建
  3. CEDEC 2021 | 让巨大化角色充满真实感的五大法则
  4. ASP.NET MVC (四、ASP.NET Web API应用程序与跨域操作)
  5. NUMA的取舍与优化设置
  6. 【MySQL】查看MySQL配置文件路径及相关配置
  7. 统计数据库每天的数据增长量的脚本
  8. CentOS之httpd与apache安装区别
  9. 去掉(不显示)关闭QQ游戏后跳出的广告
  10. 使用shell脚本监控共享池内存碎片