『壹』 linux環境下C開發_linux搭建c語言開發環境
一:C語言嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。
二:Linux基礎Linux操作系統的概念、安裝方法,詳細了解Linux下的目錄結構、基本命令、編輯器VI,編譯器GCC,調試器GDB和Make項目管理工具,ShellMakefile腳本編寫等知識,嵌入式開發環境的搭建。
三:Linux系統編程重點學習標准I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。
四:Linux網路編程計算機網路在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網路發展、TCP/IP協議、socket編程、TCP網路編程、UDP網路編程、Web編程開發等方面入手,全面了解Linux網路應用程序開發。重點學習網路編程相關API,熟練掌握TCP協議伺服器的編程方法和並發伺服器的實現,了解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網路通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。
五:數據結構與演算法數據結構及演算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯旅瞎性。此階段的學習要重點理解數據結構與演算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序演算法等應用及其C語言實現過程。
六:C、QTC是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平台、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣范的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平台。包括IDE使用、QT部件及布局管理器、信息與槽機制的應用、滑鼠、鍵盤及繪圖事件處理及文件處理的應用。
七:CortexA8、Linux平台開發通過基於ARMCortex-A8處理s5pv210了解晶元手冊的基本閱讀技巧,掌握s5pv210系統資源、時鍾控制器、電源管理、異常中斷控制器、nandflash控制器等模塊,為底層平台搭建做好准備。Linux平台包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平台上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時了解Android操作系統開發流程。Android系統是基於Linux平台的開源操作系統,該平台由操作系統、中間件、用戶界面和應用軟體組成,是首個為移動終端打造的真正開放和完整的移動軟體,目前它的應用不再局限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。
八:驅動開發拆顫空驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階洞租段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的介面,掌握系統對設備的並發操作。熟悉所開發硬體的工作原理,具備ARM硬體介面的基礎知識,熟悉ARMCortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字元設備、塊設備、網路設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。
以上就是列出的關於一名合格嵌入式Linux開發工程師所必學的理論知識,其實,作為一個嵌入式開發人員,專業知識和項目經驗同樣重要,所以在我們的理論學習中也要有一定的項目實踐,鍛煉自己的項目開發能力。
『貳』 如何搭建嵌入式linux開發環境
1. 更新到最新的軟體包
Open up System -> Administration -> Update Manager
Click on Settings
Open the Updates Tab
Set 'Release upgrade' to 'Never'. That makes the option to upgrade to Karmic go away.
Close the settings dialog box.
Click on 'Check' to check for upgraded packages. It will look for packages that are upgraded from the version that is installed on your box.
Choose to install the upgrades. This will take a while on a freshly installed box.
2. 安裝代碼編輯工具
sudo apt-get install vim-gtk
3. 安裝網路工具
TFTP伺服器
1. 安裝TFTP伺服器及客戶端(tftp-hpa是客戶端,tftpd-hpa是伺服器端)
sudo apt-get install tftp-hpa tftpd-hpa
2. 配製TFTP伺服器,編輯/etc/default/tftpd-hpa,修改後的內容如下:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
3. 創建TFTP目錄並重啟TFTP服務
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
sudo service tftpd-hpa restart
4. 測試
$tftp tftp伺服器地址
>get 文件名(取文件)
>put 文件名(發送文件)
>quit (退出)
5. U-boot參數
set bootcmd tftpboot $loadkernaddr image_dir/zImage\; bootm loadkernaddr
例子:set bootcmd tftpboot c0008000 192.168.1.10:kernel.img\; bootm c0008000
NFS伺服器
1. 安裝NFS伺服器
sudo apt-get install nfs-kernel-server
2. 配製/etc/exports
/rootfs *(rw,sync,no_root_squash)
3. 重啟NFS服務
sudo /etc/init.d/portmap restart
sudo /etc/ini.d/nfs-kernel-server restart
4. 顯示NFS共享目錄
showmount –e
掛載和卸載NFS目錄
sudo mount -t nfs NFS伺服器地址:/rootfs /mnt
sudo umount /mnt
5. U-boot參數
setenv bootargs "root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off init=/init console=ttySAC2,115200"
例:
setenv bootargs "root=/dev/nfs rw nfsroot=192.168.1.10:/nfsboot/rootfs ip=192.168.1.199:192.168.1.10:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC1,115200"
SAMBA伺服器
1:安裝SAMBA伺服器及客戶端
sudo apt-get install samba
sudo apt-get install smbfs
sudo apt-get install system-config-samba
2:修改配製文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bck
sudo vim /etc/samba/smb.conf
只留下[global]
3:打開配製工具
sudo system-config-samba
配製samba用戶和共享目錄
4:重啟SAMBA
sudo /etc/init.d/smbd restart
5:windows下 \\samba伺服器地址
SSH
sudo apt-get install openssh-server openssh-client
修改主機名
sudo vim /etc/hostname