作者 主題: OSSLab ARM embedded system 快速開發教學 歡迎大家參與  (閱讀 9177 次)

0 會員 與 1 訪客 正在閱讀本文。

thx

  • 鑽研的研究生
  • *****
  • 文章數: 510
    • 檢視個人資料
    • http://www.osslab.com.tw
http://www.osslab.com.tw/Hardware/Open_Embedded_System
OSSLab 對於embedded system 有長期興趣研究

但我這種非專業 ,不太會C ,  只有使用過ipkg套件
一直很好奇 怎樣 build 自己軔體  自行製作專門 ip pbx等網路硬體

直到最近因為研究朋友手上 embedded system 硬體 對於整個embedded 開發經驗 build custom firmware  才有一定瞭解...
網路上並沒有很完整教學,都是很片段
有點想寫一篇 簡單  從頭到尾 embedded systemg 實務 當做樂高兜的開發教學 

小弟非科班,也沒投入相關產業..概念絕對不足 很容易寫錯 因此希望有高手來一起參加討論 學習..

把一些想法大綱整理一下
 
搭配硬體 以 Marvell Orion SoC 便宜高擴充性NAS
http://www.osslab.com.tw/Hardware/Open_Embedded_System/Marvell_Orion_SoC_Nas
http://www.pczone.com.tw/vbb3/thread/16/154631/

主要在於本台具有多I/O (USB ,ESATA ,Mini pci ) 低價位設備

Sources code http://git.kernel.org/?p=linux/kernel/git/nico/orion.git

1. Embedded  arm Linux 開發系統開發流程
         :定好硬體規格 ,  開發環境. GCC ,GNU MAKE 簡介
 
2.Linux kernel 簡介  核心目錄跟  閱讀sources code

3.交叉編譯工具 ,toolchain 簡介, glibc/uClibc版本   建立腳本文件  建立配置文件 執行腳本  增加環境變量

4. Bootloader簡介  分析 uboot 工作原理  uboot 內存映射,Uboot 指令 ,MTD
                         bootloader 指令 , TTL 腳位抓取法..

   (u- boot stage 1 ,u-stage 2 分析 ,bootloader 編譯 這塊不碰的話 好像不能usb boot)

5.核心配置:
              設定nand 分區   配置核心選項 

   核心編譯:
              清除多餘文件   編譯核心image跟模塊  安裝模塊

   核心下載  :
             uboot 指令

    建立linux 根目錄檔案系統
               文件目錄基本結構

6.驅動開發要點 :
                 記憶體位置,中斷位置,核心調試 ,

7 .block level設備驅動實務
   (方便一些軔體原來版上 8MB NAND Flash 空間不夠 放外置USB DOM)

   其他驅動實務 (usb 網路卡,音效卡,WLAN ,藍芽 )

8.定製軔體應用編議實例 :
   定製   Asterisk  embedded IP PBX 軔體實務 Sources code,  (這篇會由OSSLab 完成)


因此我們定出二個方向 :

如果是開源網路上大大 可以跟我們免費索取 此硬體開發品平台   實驗室提供三個名額 (名額由 OSSLab thx, alang 審核)

不過管是之前或現在跟我們買過的embedded 設備  ,你願意補充如上章節 ,全額退還購買開發機NAS 費用 (活動截止於2012.5.10) 

連絡方式 thx@osslab.com.tw


如果全由我們OSSLab 實驗室成員完成全部章節?  :P 我只能說 盡量盡量了......
« 上次編輯: 2012-04-16 05:31 由 thx »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17465
    • 檢視個人資料
    • http://www.study-area.org
推~~ ^_^

thx

  • 鑽研的研究生
  • *****
  • 文章數: 510
    • 檢視個人資料
    • http://www.osslab.com.tw
如果要增加embedded system 功能,另外一種方式是使用optware 安裝ipkg
Optware 全名為 advanced package manager , 簡單講就是 Embedded system 上的套件管理安裝

OSSLab 之前有分享把ASUS Router 安裝Asterisk IPKG套件後 就變成 embedded IP PBX
http://www.osslab.com.tw/Hardware/Open_Embedded_System/ASUS/Asterisk_in_ARM_Device/IP_PBX_In_ASUS_WL-520GU_DD-WRT

這邊我們要在沒有廠商支援狀況下  也沒有國外hacker 支持下  按部就班完成我們改裝計劃

http://www.webos-internals.org/wiki/Setting_up_optware_feed

用 預設admin 帳號SSH進設備後

代碼: [選擇]
$ su
This applet requires root priviledges!

要root 權限

代碼: [選擇]
$vi /etc/passwd
root:TnU5p4RsVcJYk:0:0:root:/root:/bin/sh
nobody:*:500:499:Nobody:/var:/bin/nologin
admin:bmkVMsQ70yhfc:501:499:admin:/home:/bin/sh
(想要回寫  passwd檔的話 admin帳號沒這權限)

TnU5p4RsVcJYk  hash 要來解密

參考

http://support.ceci.com.tw/support/TechInfo/Network/%E5%A6%82%E4%BD%95%E7%A0%B4%E8%A7%A3UNIX%E5%AF%86%E7%A2%BC%E6%AA%94.htm

http://blog.roodo.com/retsu0/archives/2642612.html

John the Ripper password cracker 可判斷
http://www.openwall.com/john/g/john179j5w.zip 下載

把加密字串 如 "TnU5p4RsVcJYk" 放在 1.TXT內
john-omp -i:all 1.txt 
這邊john 會幫忙判定 hash 加密型式


此台為 DES 加密型式
John 多核心版(i7-2600) 跑了 3天沒結果 .
因此換下hashcatlite

http://hashcat.net/hashcat-gui/ 這邊下載
設定如圖下
 




 用Nvidia 高級顯示卡 GTX 570 跑了一天又21 hours
root password = ntxadmin

有了root password 我們下一步就能來安裝optware

zzz0072

  • 懷疑的國中生
  • **
  • 文章數: 53
    • 檢視個人資料
http://www.osslab.com.tw/Hardware/Open_Embedded_System
OSSLab 對於embedded system 有長期興趣研究

但我這種非專業 ,不太會C ,  只有使用過ipkg套件
一直很好奇 怎樣 build 自己軔體  自行製作專門 ip pbx等網路硬體

直到最近因為研究朋友手上 embedded system 硬體 對於整個embedded 開發經驗 build custom firmware  才有一定瞭解...
網路上並沒有很完整教學,都是很片段
有點想寫一篇 簡單  從頭到尾 embedded systemg 實務 當做樂高兜的開發教學 

小弟非科班,也沒投入相關產業..概念絕對不足 很容易寫錯 因此希望有高手來一起參加討論 學習..
[刪除]
不過管是之前或現在跟我們買過的embedded 設備  ,你願意補充如上章節 ,全額退還購買開發機NAS 費用 (活動截止於2012 ,4.10) 

連續方式 thx@osslab.com.tw [/color]

請問一下參加方式是?
另外連續方式是不是聯絡方式的筆誤?

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4050
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
另外連續方式是不是聯絡方式的筆誤?

應該是 「聯繫方式」 的筆誤 (注音)
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

thx

  • 鑽研的研究生
  • *****
  • 文章數: 510
    • 檢視個人資料
    • http://www.osslab.com.tw
這計畫講究實作.. 所以等於把Marvell Orion SoC Nas 做開發板
希望從應用需求去瞭解一些embedded 開發的概念
要不然對我們外行人來講
是網路上零散資訊又沒實作..是沒有辦法真正理解跟學進去的
是開源界大大想免費索取設備請寫信給我 thx@osslab.com.tw
或是
http://www.pczone.com.tw/vbb3/thread/16/154631/

http://www.osslab.com.tw/Hardware/Open_Embedded_System/Marvell_Orion_SoC_Nas/%E5%AE%89%E8%A3%9D_Optware

安裝optware 這邊以放在/home/share/ 為例
以root id ssh  登入 (密碼就前文所解的)
代碼: [選擇]
su
mkdir /home/share/opt
cd /home/share/opt
http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk 因為wget 有bug
直接抓下檔用網芳把 ipk放在 /share/ 內

代碼: [選擇]
mkdir /opt
mount -o bind /home/share  /opt


解開
代碼: [選擇]
tar -xOvzf ipkg-opt_0.99.163-10_arm.ipk ./data.tar.gz | tar -C / -xzvf -

用vi 編輯 /opt/etc/ipkg.conf
代碼: [選擇]
vi   /opt/etc/ipkg.conf
src cs05q3armel http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable



代碼: [選擇]
export PATH=$PATH:/opt/bin
ipkg update
ipkg list

已安裝好optware 可直接安裝IPKG套件



可試安裝 nano 文字編輯器
代碼: [選擇]
ipkg install nano
« 上次編輯: 2012-03-26 09:34 由 thx »

thx

  • 鑽研的研究生
  • *****
  • 文章數: 510
    • 檢視個人資料
    • http://www.osslab.com.tw
本文最終修定以 http://www.osslab.com.tw/Hardware/Open_Embedded_System/ARM_Simulator_on_x86_with_Qemu 為主

ARM Simulator on x86 with Qemu
為了方便開發 ARM 硬體的應用程式,透過 Qemu 可以在 x86 機器上建立一個 ARM Simulator,開發者要測試軟體或做ARM 編譯,可以使用這環境。

應用環境如下:
1.一般ARM 網路設備,Embedded system 編譯或測試
2.Ubuntu for Arm device (如Android) 等測試
安裝 Qemu

系統環境:
    Ubuntu 10.04
    Qemu 1.0.1

代碼: [選擇]
cd /usr/src
wget http://wiki.qemu.org/download/qemu-1.0.1.tar.gz
tar xzf qemu-1.0.1.tar.gz
cd qemu-1.0.1
./configure
make
sudo make install

測試 Qemu

必須有視窗環境執行以下指令
代碼: [選擇]
wget http://wiki.qemu.org/download/arm-test-0.2.tar.gz
tar xzf arm-test-0.2.tar.gz
qemu-system-arm -kernel arm-test/zImage.integrator -initrd arm-test/arm_root.img



然後在在x86 模擬環境下測試ARM Ubuntu

建立工作目錄

mkdir arm_ubuntu-lucid
cd arm_ubuntu-lucid

安裝必要套件及下載 rootstock

代碼: [選擇]
sudo apt-get install debootstrap fakeroot bzr
bzr branch lp:project-rootstock


bzr 這行指令會上網下載 rootstock 相關檔案,故須保持外網暢通。
rootstock 可以自動建立一個 rootfs 的 tarball 檔,詳見此連結。

下載 Lucid 的 vmlinuz 檔

代碼: [選擇]
wget http://ports.ubuntu.com/ubuntu-ports/dists/lucid/main/installer-armel/current/images/versatile/netboot/vmlinuz
建立系統映像檔 qemu_ubuntu-lucid_arm.img

代碼: [選擇]
sudo project-rootstock/rootstock --fqdn ubuntu --login ubuntu --password ubuntu --notarball --imagesize 3G
mv qemu-armel-201203301652.img qemu_ubuntu-lucid_arm.img


系統建立映像檔時需要一些時間,請耐心等候。
產生的檔名會以日期來命名。

   

啟動模擬系統

代碼: [選擇]
qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel vmlinuz -hda qemu_ubuntu-lucid_arm.img -m 256 -append "root=/dev/sda rootwait"
如果看到以下的畫面,就表示成功。
接著按下 ALT+F1,會出現登入提示,以 ubuntu : ubuntu 登入。

« 上次編輯: 2012-04-16 07:07 由 thx »

thx

  • 鑽研的研究生
  • *****
  • 文章數: 510
    • 檢視個人資料
    • http://www.osslab.com.tw
http://www.osslab.com.tw/Hardware/Open_Embedded_System/Marvell_Orion_SoC_Nas/Custom_firmware
本文請參考上面LINK 為主
Custom Kernel

建議先瞭解Linux 開機程序:
http://linux.vbird.org/linux_basic/0510osloader.php#startup_intro
而embedded system 則以
uboot (bootloader),Kernel ,rootfs

這邊自行編譯 uboot 會比較有點難度 ,
Kernel 重點是要把驅動包進去
rootfs 則可選擇想要的Linux 套件.
ALARM, Gentoo, Fedora, OpenWrt

對於uboot  比較不瞭解的人  請先參考這

運作環境 ubuntu 11.04 Desktop 版  以linux-3.1.10 原始碼 為範例

  1.下載Linux sources code 跟安裝mkimage

$ wget ftp://ftp.isu.edu.tw/Linux/kernel/linux-3.1.10.tar.xz #取得Kernel 原始碼
$ tar -xJf linux-3.1.10.tar.xz -C Source
$ sudo ln -s /home/使用者/Source/linux-3.1.10 /usr/src/linux-3.1.10

$ apt-get install uboot-mkimage  # 安裝mkimage

 


2. 交叉編譯器Cross Compiler 與toolchain

Arm與X86 CPU 指令集不同 ,要準備交叉編譯器與Toolchain,
要準備安裝 binutils,gcc ,gdb,newlib 會太慢
快速方法到CodeSourcery下載現成的.

這邊  Kernel使用CodeSourcery arm-2011.03-42-arm-none-eabi.bin 安裝


編譯器安裝

 

wget https://sourcery.mentor.com/GNUToolchain/package8736/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi.bin
tar -xjf arm-2011.03-42-arm-none-eabi.bin
chmod +x arm-2011.03-42-arm-none-eabi.bin
接下來再執行以下指令,之後選否
sudo dpkg-reconfigure dash
.\arm-2011.03-42-arm-none-eabi.bin

就會執行安裝了

sudo vi /etc/profile
在最後一行增加:
PATH=$HOME/user/CodeSourcery/Sourcery_G++_Lite/bin:$PATH

保存退出。
logout  後再登入 .

 arm-none-linux-gnueabi-gcc -v


出現版本訊息 環境變數就正常

Sourcery_G++_Lite 裝在這目錄底下

$home/CodeSourcery/Sourcery_G++_Lite/bin
 

 3. 編譯Kernel 用wget 下載Hippo 大做的Script

  $ ./nas-34.x86.sh    # 執行為編譯核心 script


機板型號:選Marvell Orion-NAS Reference Design


Flash, 取消Memory Technology Device (MTD) support


若要使用NFS server上的rootfs, 將NFS client support編入核心. (建議使用)
如果要支持一些USB  裝置, 記得要勾選(比如說USB 網路卡,3G 網路卡 ,USB 音效卡)

編譯成功後, 將/usr/src/linux-3.1.10/xxxxx/arm/boot/uImage, 上傳到TFTP server.

假設以上都閒煩  請直接抓已經編譯好 的Kernel
 

4.使用U-Boot 從TFTP server 上傳Kernel
準備一台 TFTP server,
NAS-34接上TTL console線, 開機後 要在COM  Console 下快速按下 Enter  , 中斷U-Boot.
Console 目地是控制uboot 指令,傳送Kernel 還是用 網路的tftp協定

setenv serverip 192.168.7.57   # 設定 傳送kernel tftp  ip server
setenv ipaddr 192.168.7.11     # 設定 傳送kernel  NAS 本機IP
printenv  #顯示設定組態
tftpboot 800000 uImage  #  (傳送uimage 到DRAM 800000 位置)
bootm 800000#             (從80000 位置啟動)

ok  完成tftp 上傳Kernel ....
 

核心都沒問題後, 準備rootfs.(待續)

 

 

參考
http://digiland.tw/viewtopic.php?id=1942
http://buffalo.nas-central.org/index.php/Buffalo_ARM9_Kernel_Port
http://computingplugs.com/index.php/Building_a_custom_kernel
http://www.nslu2-linux.org/wiki/Optware/PlugComputers
http://plugcomputer.org/plugwiki/index.php/Re-building_the_kernel_and_U-Boot
http://linux.vbird.org/linux_basic/0510osloader.php#startup_intro