日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2024/7/19 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ev3编码软件linux,利用官方固件搭建EV3自制系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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自制系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。