A. 想買一塊ARM板子,初學者,是買ARM9好還是ARM7好 最重要的是資料要全,要細
初學者看你想學什麼系統來決定買什麼板子。
如果是學習工業控制系統或者uC/OS-II實時系統,建議你買ARM7或者Cortex-M3,這兩種的話買三星的S3C44B0X、ATMEL的AT91SAM7S256或者ST公司的STM32的Cortex-M3核的CPU都是可以的,資料都比較全。這些CPU價格便宜,性能比較好,而且工業控制所需的外設一般都齊全。個人推薦STM32。
如果是學習嵌入式linux,建議買ARM9或者ARM11的板子。這方面選擇性不太大,一般ARM9就是三星的S3C2440,ARM11就是S3C6410,ARM9的價格在500左右,ARM11在1000以下。建議買ARM11,最爽的ARM11開發板就是LDD6410了,和宋寶華老師的《Linux設備驅動開發詳解(第二版)》配套,但是也是性價比最低的。其他的什麼飛凌6410、OK6410之類的淘寶上一堆,基本資料都比較重合,也沒啥特質化的。
為何建議你買ARM11?因為它可以支持android操作系統。這個系統現在比較火,手機、平板和其他消費電子目前都在用,就業還不錯。價格的話也在1000之內,預算足夠的話還是一步到位比較好。
如果想學Linux但是預算又不太足的話,可以考慮下國產的SEP4020開發板,東南大學國家集成電路設計中心出的,300-500元左右的ARM720T的CPU,性能還不錯,外設也足夠豐富,關鍵是論壇有一堆老師在做技術支持。論壇地址:http://www.armfans.net/forum-20-1.html。可以在預算不太多的情況下考慮下。
個人建議:先買個SEP4020或者Cortex-M3學著(學習Linux的話就是SEP4020,uC/OS-II的話兩個都行),等入門OK了,再搞ARM11。當然了,預算充足直接ARM11也行。
B. 想學習Linux 驅動,需要什麼知識
首先,接觸linux操作系統,在你的電腦上裝一個linxu操作系統(建議ubuntu,比
較友好),熟悉經常要用的命令,熟悉環境(建議看「鳥哥的linux私房菜」)。
其次,閱讀經典書籍是不可少的,建議先看ldd前四章,大概了解linux驅動的框架
,驅動是做什麼的,該如何寫驅動,那本書上有一些例子,可以在你的電腦上編譯
,執行看看。後面的章節在結合自己的情況而定。
第三,建議閱讀ulk(understanding the linux kernel)所有的內容,了解linux
內核的一些基本知識,在心中建立一個框架,不必完全懂,深入了解就好,以後經
常翻翻,受益無窮!
第四,別著急,這才是你真的進入linux驅動的第一步,花點錢買個開發板吧,然
後了解代碼的編譯,下載,看看板子的datasheet,針對自己感興趣的深入研究。
建議學習流程,led燈控制---tp---i2c匯流排-----lcd-----camera----flash----
wifi/bt等。因為這個裡面牽涉了甚多內核的子系統(input,v4l2,fb等
),所以可能要多話時間看代碼,了解代碼的框架,設計的思想等,只要一步一個
腳印,一定會有所成。
第五,因為現在的移動設備大多數都是android的了,所以你就要看看linux
kernel在android的作用,然後往上看看,看看hal層的代碼,這些在調試中都是需
要的,如果有興趣,更加可以看看framework的代碼了,學習android一些工作機制
,類似於surfaceflinger,audioflinger等等。。
《linux就該這么學》免費提供最新Linux技術教程書籍,為開源技術愛好者努力做
得更多更好
C. so文件是什麼文件
SO文件是Linux下共享庫文件,它的文件格式被稱為ELF文件格式。由於Android操作系統的底層基於Linux系統,所以SO文件可以運行在Android平台上。
Android系統也同樣開放了C/C++介面供開發者開發Native程序。由於基於虛擬機的編程語言JAVA更容易被人反編譯,因此越來越多的應用將其中的核心代碼以C/C++為編程語言,並且以SO文件的形式供上層JAVA代碼調用,以保證安全性。
(3)lddandroid擴展閱讀:
so文件使用方法:
(1)動態庫的編譯。這里有一個頭文件:so_test.h,三個.c文件:test_a.c、test_b.c、test_c.c,我們將這幾個文件編譯成一個動態庫:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so不用該標志外部程序無法連接。相當於一個可執行文件。
(2)動態庫的鏈接這里有個程序源文件 test.c 與動態庫 libtest.so 鏈接生成執行文件 test:命令:$ gcc test.c -L. -ltest -o test命令:$ ldd test執行test,可以看到它是如何調用動態庫中的函數的。
參考資料來源:網路—SO(軟體編程)
D. Android下怎麼使用LDD查看依賴庫
Android下沒有ldd可以使用,在進行ndk開發的時候,檢查庫的依賴項特別麻煩。有兩個解決方案:
1、將linux的的ldd移植過去。因為android也是基於linux的,所以將ldd移植過去是完全可能的,google一下;
2、現成的。ndk已經提供了工具,在ubuntu下執行locate readelf,會發現有這些輸出。
E. 學習linux用什麼晶元好2016
首先,無論單片機或者ARM都是屬於嵌入式這個概念。對於ARM來說,移不移植linux要看本身產品需求,ARM7的話,一般不會使用linux。主要看CPU的資源。移植linux系統對於後期功能開發更加方便就是,因為linux幫你封裝了各種API與資源的管理。其實做linux移植不是非常復雜。正常做開發都是二級開發,也就是說CPU廠商提供了基本的SDK包。從單片機轉型做linux,一開始一般做linux驅動吧。做linux驅動,主要是要懂linux框架,上層操作與實際IO介面操作封裝了框架而已,基本都是通過注冊函數,回調實現而已。我也是做單片機到linux的,轉型過來的時候很多都會糾結與上層的操作到實際的寄存器操作,所以先從linux驅動入手在到OS,再到上層應用而已。linux與ucos-ii相比的話,linux集成了功能吧,比如說視頻,音頻,或者UI更完善太多了,ucos-ii無法利用的系統資源吧。一個ARM晶元用來裸奔就是浪費資源,總的來說就是為了更好地利用CPU的資源。不過現在來說android做嵌入式產品將是一個趨勢吧(跟人感覺)好像廢話有點多,linux學習的書籍,LDD、ULK、LDK看看,實際開發的時候學的最開,搞個板子,弄個SDK,直接看源碼,一個禮拜就可以弄個大概吧,如果只是字元設備混雜設備那就更簡單了。。。helloworld哈哈哈
F. Ubuntu 12.04 下安裝 openGL 驅動時,究竟做了什麼事
Ubuntu 下安裝 openGL 驅動的確把我折騰慘了
本人機器是 HP 的使用 i5 的集成顯卡
下載了 intel 的 installer (intel-linux-graphics-installer_1.0.1_amd64.deb ),他們不支持Ubuntu 12.04, 只支持 13.x
找了個 ATI x1300 的老顯卡,官方的驅動(ati-driver-installer-9-3-x86.x86_64.run)只支持了 Ubuntu 8.x 9.x (讓我深感,計算機真是消費品,過時了就用不起來了 )
只好買了一個 Nvidia GT610 顯卡,下載官方的 NVIDIA-Linux-x86_64-331.49.run, 順利裝上了
這驅動做了如下的事情:
1) 把驅動裝到 Kernel 中 ( 我升級了 Kernel ,又了重裝驅動 )
2) 把 /usr/lib/libGL.so 替換為 Nvidia 的(用 ldd 看就知道了),當然要把nvidia 自己的 so 也 到,這幾個目錄
[html] view plain在CODE上查看代碼片派生到我的代碼片
ldd /usr/lib/libGL.so
linux-vdso.so.1 => (0x00007fffe91ff000)
libnvidia-tls.so.331.49 => /usr/lib/tls/libnvidia-tls.so.331.49 (0x00007fa1a58c0000)
libnvidia-glcore.so.331.49 => /usr/lib/libnvidia-glcore.so.331.49 (0x00007fa1a30b1000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fa1a2d7b000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fa1a2b6a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa1a27aa000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa1a25a5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa1a22a9000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fa1a208b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa1a5e15000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fa1a1e87000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fa1a1c81000)
對於 i386 的支持庫,放在/usr/lib32中
[html] view plain在CODE上查看代碼片派生到我的代碼片
ldd /usr/lib32/libGL.so
linux-gate.so.1 => (0xf7718000)
libnvidia-tls.so.331.49 => /usr/lib32/tls/libnvidia-tls.so.331.49 (0xf75f1000)
libnvidia-glcore.so.331.49 => /usr/lib32/libnvidia-glcore.so.331.49 (0xf53ac000)
libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xf5277000)
libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xf5265000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf50bb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf50b6000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf508a000)
libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xf5068000)
/lib/ld-linux.so.2 (0xf7719000)
libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xf5064000)
libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xf505d000)
開發 Android 時使用 , Android 使用 i386是從 /usr/lib/i386-linux-gnu 裝載
所以要把 lib32 中所有文件復制到 /usr/lib/i386-linux-gnu
3) Xorg相關
Xorg是開源的 Xserver 實現
nvidia 要與Xorg集成的庫,放在usr/lib/xorg/moles下面,並改下 /etc/X11 下面的東西
xorg.conf
讓 Xorg載入 so
[html] view plain在CODE上查看代碼片派生到我的代碼片
Section "Mole"
Load "record"
Load "extmod"
Load "dbe"
Load "dri2"
Load "glx"
EndSection
裝載 /usr/lib/xorg/moles/extensions/ 下面的 libglx.so, libdri2.so 等
讓 Xorg 載入 nvida 驅動
[html] view plain在CODE上查看代碼片派生到我的代碼片
Section "Device"
Identifier "Card0"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection
附帶轉帖
Ubuntu通過重新生成/etc/X11/xorg.conf文件來調整解析度
http://blog.chinaunix.net/uid-25909722-id-3019407.html
1. Ctrl+Alt+F1 , sudo service gdm stop
2. sudo Xorg -configure (生成文件 ~/xorg.conf.new)
3. sudo service gdm start
4. mv ~/xorg.conf.new /etc/X11/xorg.conf
5. gtf 1280 1024 60 -x
6. 然後將上一步中gtf命令生成的內容:
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
插入到/etc/X11/xorg.conf中:
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
EndSection
重新啟動X。搞定。
如果不想生成xorg.conf文件,並且只想臨時的調整解析度,那麼可以按照如下方法實現:
cvt 1280 1024
sudo xrandr --newmode "1280x1024_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
sudo xrandr --addmode VGA1 "1280x1024_60.00"
sudo xrandr --output VGA1 --mode "1280x1024_60.00"
就可以臨時的調整解析度到1280x1024.
G. 嵌入式技術需要學習什麼
嵌入式系統軟體工程 方法實用技術及應用,免費下載
鏈接:https://pan..com/s/10No3IypKyLg01bV4T9b22w
《嵌入式系統軟體工程:基礎知識、方法和應用》系統地闡述嵌入式系統軟體工程所涉及的過程、方法、內容,以及在典型工業領域中的應用。全書內容分為兩大部分:第一部分介紹嵌入式系統軟體工程方法論,主要包括嵌入式軟體的開發過程(需求工程、軟體和系統體系結構、編程和測試等內容),開發和測試中所採用的標准,與安全性相關的軟體系統的准入,以及嵌入式軟體所涉及的法律問題:第二部分介紹嵌入式系統軟體在汽車領域、軌道交通領域、航天領域、醫療器械、工業自動化、通信系統中的應用,在每個應用領域重點介紹具體應用領域的一些特定需求、技術和限制條件,以及它們對於嵌入式系統軟體開發過程的影響。
H. 做Android驅動開發需要了解哪些方面的知識
匯流排知識,比如PCI、USB匯流排。晶元知識。驅動其實就是對設備上一些寄存器的配置、CPU與設備本身的通訊以及對不同命令的處理。