『壹』 arm 入門需要具備那些知識
很泛泛啊。你說的太寬泛了。根據我的理解啊,嵌入式基本分兩個吧,軟體和硬體。硬體平台一般的方案有單片機,DSP和FPGA。單片機(包括ARM)側重於控制,系統處理,類似於cpu。而DSP和FPGA有它專門的用途,例如用DSP做信號處理,在通信,語音,數據處理方面用處很多。FPGA顯得更為高端了,具體你可以去查了。現在這三者的區分越來越不明顯。
至於軟體,從底層到高層,有驅動級的,系統級和應用級之分。從簡單的無操作系統到復雜的多任務處理,軟體的開發難度也不同。
因此,嵌入式實際上並不能算是一個獨立的學科,還是要依附於傳統的電子,計算機專業,你問要掌握哪些知識和技能,就取決於你准備從事哪方面的工作了。是軟體還是硬體,這都不是一兩句話能說清楚的。你可以到一些網站,例如csdn,21ic多看看,了解一些行業信息。看的多了,你自然會有自己的想法。
『貳』 Android中的armeabi、armeabi-v7a、arm64-v8a及x86的詳解
一. lib和libs
放在lib中的是被reference的,放在libs中的是被include的。
放在libs中的文件會自動被編輯器所include。所以不要把API放到libs里去。
lib的內容是不會被打包到APK中,libs中的內容是會被打包進APK中
二. .so庫
NDK編譯出來的動態鏈接庫。
一些重要的加密演算法或者核心協議一般都用c寫然後給java調用。這樣可以避免反編譯後查看到應用的源碼。
三. .so庫該如何存放
放置 .so 文件的正確姿勢其實就兩句話:
• 為了減小 apk 體積,只保留 armeabi 和 armeabi-v7a 兩個文件夾,並保證這兩個文件夾中 .so 數量一致
• 對只提供 armeabi 版本的第三方 .so,原樣復制一份到 armeabi-v7a 文件夾
存放so的規則:
你應該盡可能的提供專為每個ABI優化過的.so文件,但要麼全部支持,要麼都不支持:你不應該混合著使用。你應該為每個ABI目錄提供對應的.so文件。
四. libs下armeabi等的作用是什麼
存放.so庫,主要針對不同的設備兼容,也可以說是專門針對不同Android手機下CPU架構的兼容。
Android 設備的CPU類型(通常稱為」ABIs」)
早期的Android系統幾乎只支持ARMv5的CPU架構,後面發展到支持七種不同的CPU架構:ARMv5,ARMv7 (從2010年起),x86 (從2011年起),MIPS (從2012年起),ARMv8,MIPS64和x86_64 (從2014年起),每一種都關聯著一個相應的ABI。
應用程序二進制介面(Application Binary Interface)定義了二進制文件(尤其是.so文件)如何運行在相應的系統平台上,從使用的指令集,內存對齊到可用的系統函數庫。在Android 系統上,每一個CPU架構對應一個ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。
armeabi-v7a: 第7代及以上的 ARM 處理器。2011年以後生產的大部分Android設備都使用它.
arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
x86: 平板、模擬器用得比較多。
x86_64: 64位的平板。
如果項目只包含了 armeabi,那麼在所有Android設備都可以運行;
如果項目只包含了 armeabi-v7a,除armeabi架構的設備外都可以運行;
如果項目只包含了 x86,那麼armeabi架構和armeabi-v7a的Android設備是無法運行的; 如果同時包含了 armeabi, armeabi-v7a和x86,所有設備都可以運行,程序在運行的時候去載入不同平台對應的so,這是較為完美的一種解決方案,同時也會導致包變大。
最後,如果我們只想支持armeabi-v7a,那麼需要在gradle中配置
因為默認情況下,打包後會自動生成armeabi 到 x86的所有文件夾。這就有可能導致一些x86的設備因為在x86文件夾下找不到so文件而崩潰。
『叄』 A13晶元用的也是ARM指令集,為何組裝不出安卓手機
其實這個想法很早就有人想過了,但是最終還是沒有嘗試。其實並不是組裝不出來,而是太過於繁瑣而且沒有任何意義。首先從硬體方面分析,安卓的主板和A系列的處理器並不兼容,而且電壓電流方面的問題也不小。其次就是軟體方面的分析,安卓雖然是開源的,但是如果想要兼容A系列的處理器,那麼基本上需要把安卓的代碼完全重構一遍。最後就是經過這兩方面的魔改之後,才能組裝出使用A13晶元的安卓機,但是這樣的安卓機真的好用么?況且蘋果的系統和硬體都是閉源的。
最後就是經過這兩方面的魔改之後,才能組裝出使用A13晶元的安卓機,但是這樣的安卓機真的好用么?況且蘋果的系統和硬體都是閉源的。開發和破解的難度都是非常大的。而且安卓容易出現卡頓的根本原因還是因為安卓機在關閉程序之後,並不是直接退出,而是在手機的後台進行運行。不對系統進行更換,根本解決不了這個問題。
『肆』 如何才能快速的學習ARM單片機。我有51的基礎
想快就要花錢,去買塊周立功的ARM9板,裡面有實驗源代碼,實驗指導書,把實驗全做完就什麼都搞懂了,去電驢上下一些ARM的教學視頻,比如<手把手交你學ARM>,力天電子出品,不懂得地方看看視頻就行了.有51的基礎的話在接觸ARM你會感覺到挺簡單甚至有點枯燥,不過ARM的精華在於它可以移植系統,所以一定要堅持學習,當你把ARM體系結構看懂了之後,可以研究一下啟動代碼,然後進入移植操作系統的學習,比較經典的就是UCOSII,看看邵貝貝翻譯的UCOSii操作系統.
反正我就是這么走過來的.這個學期剛接觸的ARM感覺比較簡單,大概是學的不夠深吧.