『壹』 如何通過USB實現PC與ARM開發板linux文件系統傳輸文件
可以,可以使用USB轉串口晶元,至於ARM端可以使用C編程接收
『貳』 成為linux程序員需要學習什麼
1 第一部分:LINUX平台搭建與環境熟悉
了解Linux系統;區分各種版本的Linux系統,以便於拓展Linux視野。
1、Linux 簡介;
2、Linux 系統的主要特點;
3、Linux 的組成;
4、主要的Linux 版本;
5、嵌入式Linux簡介與發展
第二部分虛擬機安裝和LINUX系統安裝
虛擬機安裝;
2 Linux系統的安裝;
3 Linux系統的常用軟體的安裝;
4 Linux快速入門
5 熟悉運用Linux環境下,常用命令的操作與系統設置,如常用的Shell;掌握基本的Shell 應用
6 第三部分:嵌入式LINUX環境搭建
建立嵌入式Linux開發環境
7 熟悉嵌入式開發平台
8 嵌入式Linux開發工具
9 Linux下的調試技巧
10 MAKE工程管理器
11 硬體環境的搭建;arm-linux-gcc與gcc安裝配置
第四部分:U-Boot:了解 U-Boot的作用及工作流程;了解Bootloader的代碼結構、編譯過程;移植U-Boot;掌握常用的U-Boot命令。
Bootloader介紹
u-boot工程介紹
u-boot的編譯使用
u-boot源碼分析
u-boot資源分配
配置編譯u-boot
u-boot移植過程
u-boot常用命令操作
添加u-boot新命令
設置u-boot環境變數
u-boot驅動添加如網卡:DM9000
第五部分:LINUX內核移植:熟悉內核的原碼結構和kbuild Makefile語法;掌握和內核、驅動模塊編譯相關的原理及方法。
1、Linux內核介紹
2、Linux內核特點
3、Linux內核源代碼結構
4、Linux內核選項解析
5、Linux內核編譯鏈接
6、內核模塊編譯、使用方法
第六部分:LINUX根文件系統
busybox 包移植、編譯
Linux跟文件系統製作過程
根文件系統介紹
4. nfs文件伺服器系統搭建
第七部分:LINUX驅動開發
驅動開發是嵌入式Linux開發難度最高的內容,也是目前嵌入式行業最緊缺的人才之一。本課程介紹嵌入式Linux驅動開發相關概念及開發流程,了解驅動開發的關鍵技術點,重點講解嵌入式Linux下常用介面驅動的編寫方法,包括
字元型LED驅動開發(GPIO口驅動)
按鍵驅動開發(中斷驅動,在驅動中中斷程序的編寫,消息隊列的應用
ADC驅動開發
網卡驅動開發
串口驅動開發
液晶屏(TFT彩屏驅動開發
觸摸屏驅動+tslib(中間插件移植與設置),
USB驅動開發+USB無線網卡移植
IIS驅動開發+maplay移植與應用(mp3播放)+mplayer移植與應用(視頻播放Mp4/廣告機等播放)
SD驅動開發
RTC驅動開發
電源管理方法
第八部分:LINUX應用學習
課程目標:嵌入式Linux應用開發和系統開發是嵌入式Linux中最重要的一部分,也是企業人才需求最廣的一部分。主要目標是精通嵌入式Linux下的程序設計,熟練掌握嵌入式Linux的開發環境、系統編程以及網路編程,熟悉C++、QT編程並且深刻體會整個嵌入式Linux項目開發流程,強化學員對Linux應用開發的能力.
Linux系統中的進程的概念,在應用程序中線程與父子進程的創建與應用
線程之間、進程之間的通信
進程間通信基本概念
管道(PIPE)
信號(SIGNAL)
內存映射(MAPPED MEMORY)
消息隊列(MESSAGE QUEUE)
信號量(SEMAPHORE)
共享內存(SHARE MEMORY)
tcPip協議在應用程序中的編程開發(SOCKET套接字編程開發)
10.1. ISO/OSI七層協議模型與IP網路四層模式
10.2.TCP/IP協議簇
10.3. 基於嵌入式Linux的TCP/IP網路結構
10.4. 基於嵌入式Linux的SOCKET編程
10..5.UDP與TCP的區別
10.6. UDP SERVER-CLIENT關系程
文件讀寫與存儲
第九部分:QT移植與開發
通過本課程的學習,學員能夠了解嵌入式Linux下的幾種常見GUI及其特點,重點能掌握QT的有關內容,具備QT程序設計能力。了解嵌入式資料庫的配置與開發
1 、嵌入式Linux GUI介紹
2、嵌入式QT開發包移植
3、QT介紹及其信號插槽機制
4、QT圖形界面編程技術
5、QT應用程序與Linux驅動的銜接
6、QT在實際項目中具體應用
第十部分:無線通訊應用
1、無線wifi模塊應用
2、3G模塊應用
第十一部分:嵌入式系統應用程序,驅動程序調試
1、Linux基本工具調試使用。GDB,insight調試等
2、Linux應用程序的編程
3、嵌入式產品程序打包與發布
第十二部分:嵌入式項目綜合調試,產品發布
本課程將通過一個真實完整的項目案例,讓學員了解真實項目的開發流程,掌握如何將所學知識應用到項目開發中。將模擬真實項目的管理過程,培養學員項目團隊協同開發能力,項目文檔編寫能力和新知識的學習能力,為下一步就業做好知識上和心理上的充分准備。
『叄』 ZLG周立功USBCAN-II在Linux使用c++編編譯為什麼會提示庫函數找不到
編譯器安裝目錄,有個文件夾比如 Include 是專門放頭文件的,編譯器在編譯程序的時候,需要什麼頭文件,就從這個文件夾裡麵包含進來,但是如果你在程序里使用了uf.h 這個頭文件的某些函數,但是在Include 這個文件夾裡面卻沒有 uf.h 這個頭文件,那麼編譯的時候,就會提示打不開頭文件 XXX 什麼的,解決辦法就是,把所需的頭文件 uf.h 放進 Include 這個文件夾裡面。
有空看看《編譯原理》這本書吧,學編程語言必須學的一門書,不是我說必須學的,是這條路必須要學到的一些知識,不難,還有《數據結構》也是必須學的,不管你學什麼。
『肆』 嵌入式需要學什麼嵌入式需要學哪些課程和內容
1.1 有哪些設備使用單片機或Linux
所有的電子產品,所用技術都可以認為要麼是單片機,要麼是Linux;GUI方面主要是QT/Android,它們都是運行於Linux之上的。我們說的單片機不使用操作系統,但是使用單片機設備肯定遠遠超過Linux。很多人也是先學習單片機,從單片機進入電子工程師行業,日常生活中,有哪些產品使用單片機、Linux呢?下面舉一些例子:
下面我們用類比和邏輯推導出嵌入式Linux系統的組成,沒錯,「推導」。
從上圖可以知道:
組成:嵌入式Linux系統= bootloader + linux內核 + 根文件系統(裡面含有APP)。
bootloader:它的目的是啟動內核,去哪等讀內核?讀到哪裡?去Flash等外設讀內核,存到內存里去。所以需要有Flash里外設的驅動能力,為了調試方便還會有網路功能。所以,可以認為 booloader = 裸機集合,它就是一個復雜的單片機程序。
Linux內核:Linux內核的最主要目的是去啟動APP,APP保存在哪裡?保存在「根文件系統」里。「根文件系統」又保存在哪裡?在Flash、SD卡等設備里,甚至可能在網路上。所以Linux內核要有這些Flash、SD卡里設備的驅動能力。
不僅如此,Linux內核還有進程調度能力、內存管理等功能。
所以:Linux內核 = 驅動集合 + 進程調度 + 內存管理等。
2.3 要學習bootloader嗎
Bootloader有很多種,常用的叫u-boot。
在實際工作中,對於u-boot基本上是修修改改,甚至不改。但是u-boot本身是很復雜的,比如為了便於調試,它支持網路功能;有些內核是保存在FAT32分區里,於是它要能解析FAT32分區,讀FAT32分區的文件。
花那麼多精力去學習u-boot,但是工作中基本用不到,這對初學者很不友善。
所以,對於初學者,我建議:理解u-boot的作用、會使用u-boot的命令,這就可以了。
如果你的工作就是修改、完善bootloader,那麼再去研究它吧。
2.4 要學習Linux內核、要學習驅動程序嗎
之前我們說過Linux內核 = 驅動集合 + 進程調度 + 內存管理等,如果要學習Linux內核,從驅動程序入手是一個好辦法。
但是人人都要學習Linux內核、人人都要學習Linux驅動嗎?顯然不是。
作為初學者,懂幾個簡單的驅動程序,有利於工作交流;理解中斷、進程、線程的概念,無論是對驅動開發、應用程序開發,都是很有好處的。
所以對於初學者,建議前期只學習這幾個驅動:LED、按鍵、中斷。
LED驅動程序:這是最簡單的驅動程序。
按鍵驅動程序:它也比較簡單,從它引入「中斷」。
中斷:從「中斷」它可以引入:休眠-喚醒、進程/線程、POLL機制、非同步通知等概念。這些概念無論是對驅動開發,還是對應用開發,都很重要。
所以,對於初學者,我建議必須學習這幾個驅動:LED、按鍵、中斷。
入門之後,如果你想從事內核開發、驅動開發,那麼可以去鑽研幾個驅動程序(輸入系統、I2C匯流排、SPI匯流排等),掌握若干個大型驅動程序後,你對內核的套路就有所了解了,再去研究其他部分(比如進程管理、文件系統)時你會發現套路是如此通用。
攝像頭(VL42)、音效卡ALSA驅動是Linux中比較復雜的2類驅動,它們是很難的,如果工作與此相關再去研究。
2.5,要學習Linux應用程序嗎?先學一些基礎技能
要學,即使以後你只想研究內核,一些基本的應用開發編寫能力也是需要的:
基本設備的訪問,比如LCD、輸入設備
進程、線程、進程通信、線程同步與互斥
休眠-喚醒、POLL機制、信號
網路編程
①②③部分的知識,跟驅動有密切的關系,它們是相輔相承的。
掌握了基本驅動開發能力、基本應用開發能力之後,在工作中你就可以跟別人友好溝通了,不至於一臉懵逼。
2.6,應用程序是怎麼啟動的?要了解一下根文件系統
你辛辛苦苦寫出了應用程序,怎麼把它放到板子上,讓它開機就自動啟動?
你寫的程序,它依賴於哪些庫,這些庫放到板子上哪個目錄?
怎麼做一個可升級的系統?即使升級中途斷電了,也要保證程序至少還可以運行老的版本?
這些都需要我們了解一下根文件系統。
先了解一下init進程:它要讀取配置文件,根據配置文件啟動各個APP。
了解了init進程,你就了解了根文件系統的組成,就可以隨心所欲裁剪系統,為你的項目製作出最精簡的系統。
第3章 學習方法
3.1 先不要打破砂鍋問到底
嵌入式涉及的東西太多太雜了,如果心裡沒有主線,碰到什麼都要去研究個透徹,最終反而忘記自己要學什麼了。
嵌入式涉及硬體知識、軟體知識,軟體里涉及匯編、ARM架構、C語言、Makefile、Shell;又分為bootloader、內核、驅動、基本的APP、GUI。
比如我們會用到Makefile,了解它的基本規則,會用我們提供的Makefile就可以。
不需要深入研究那些make函數,因為在工作中都有現成的Makefile給你使用,不需要自己去編寫一套Makefile。何必花上好幾天去深入研究它呢?
比如我們會用到bootloader,難道又要花上幾個月來深入研究u-boot嗎?工作中基本不需要改u-boot,會用那幾個命令就可以。
甚至有些學員先去買本shell的書來學習shell命令,何必?我們在視頻中用到什麼命令,你不懂時再去網路一下這些命令就可以了。
不要脫離初學者的主線:應用基礎、驅動基礎。有了這2個基礎後,你想深入研究某部分時,再去花時間吧。
3.2 思路要清晰,不怕抄代碼
視頻里的代碼,請你一定要自己去寫一次、寫多次。為什麼我現在寫驅動那麼熟?我2009年在華清遠見上課時,
每次上課我都要給學生寫一次那些驅動,十幾次下來閉著眼睛都知道內核的套路了。
記不住那些函數?我也記不住,我都是去參考同類的驅動程序,這又不是閉卷考試。
但是要理清楚思路,你寫這個程序要完成什麼功能、怎麼實現這些功能?這個要弄清楚。
有了思路後再寫代碼,不知道怎麼寫?沒關系,看看視頻,看看示例,然後關閉視頻看看能否自己寫出來。
3.3 對自己的方向很了解,我只能帶你到這里了
我的專長是操作系統,是快速地帶領大家掌握一些項目開發的基礎知識。
如果你決定深入研究某方面時,我並不能帶你多久。你要去看源碼,去看這方面的專業書籍。
比如想深入鑽研內核的內存管理時,它有頁表映射(你需要閱讀ARM架構的手冊)、SLAB分配器、vmalloc/malloc實現、mmap實現、缺頁中斷、父進程子進程之間的頁面管理等等,內容非常多。有時候連書籍都沒有,你需要直接啃代碼。
當你想從事某個行業時,就需要深入研究行業相關的知識。
比如CAN匯流排,它可以寫成一本書:CAN協議、CAN報文、Socket CAN、車身網路拓撲結構,CAN應用報文,CAN網路管理報文,CAN診斷報文。
想做物聯網網關,需要深入研究MQTT,MQTT協議相對簡單,但是MQTT英文原版協議有130多頁,中文版有近100頁,是一本小書了。
每個行業都有自己的業務邏輯,在掌握基本的編程能力之一,你需要結合具體的業務去深入學習。
『伍』 自學嵌入式開發應該先要學些什麼
嵌入式開發的學習其實並沒有那麼難,只要了解學習的體系,掌握正確的學習方法,學習起來並不難。來講一下嵌入式開發都要學些啥!
嵌入式開發的主要學習內容:
C,Java核心編程:c語言核心編程,Java核心編程;
Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
大型項目實踐:每期安排各類型真實的項目
互聯網行業目前還是最熱門的行業,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有IT專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,建議實地考察對比一下。
祝你學有所成,望採納。
『陸』 很簡單的linux串口編程問題:fd = open("/dev/ttysn",|XXXXXXX)。其中哪個ttysn具體是多少
沒做過linux下的,提供個建議,看成不成。
PC端的串口必須配置正確。 要確定內 與 板子的 波特率 要一致。
此外容, PC端作為串口總控端, COM埠配置只針對於PC端自己。 比如你使用了COM1口,那麼定義的時候,(ttysn 應該是 ttysn1 --- 沒用過linux下的不知道是不是在這配置,你要查)
板子端的COM口配置也是只針對於自己,如果你使用板子的COM1和COM2, 那麼程序中初始化的時候需要同時把COM1/2都初始化,那麼PC端就可以連接任意的板子埠。
PC(COM1) ---- 板子(COM1) 或 PC(COM1) ---- 板子(COM2)
在確保板子硬體沒有問題的情況下,且PC端程序無誤, 如果PC端無法接收到數據, 嘗試
在PC端編寫程序時,在 接收數據之前 加上時間延遲。 也就是說,PC發出數據後需要等待
一段時間才能接收到板子 返回的數據。 具體時間測試來看。
『柒』 linux 中USB 來傳輸數據
USB設備規范中兩個來HOST直接連會有問源題, 你需要中間接一個轉換控制器。
然後就看你用什麼協議傳數據了。
————
學硬體的, 知道usb host的電路直接連是不成的, 但怎麼寫driver就不懂了。 host to host控制器可以在市場上買到的, 貌似。說不定還附了driver.
PC端可以把這個USB介面虛擬成串口, 然後通過串口訪問來進行實時數據傳輸。
就像現在的很多手機一樣。
__
PC是host, PDA是device, 應該能找到可以把USB口虛擬成串口的驅動,這樣程序會好寫一些。我的手機就是這樣的,它可以和電腦實時通信。
『捌』 嵌入式開發要學什麼嵌入式開發要學哪些東西
學習嵌入式開發分兩種,像STM32、飛思卡爾等系列單片機屬於無操作系統的,直接對寄存器或者利用庫函數操作的,這種學習來難度相對小一些,就業前景也不錯。
還有一些像ARM9,或者CortexA8、A9系列的可以運行Linux或者安卓操作系統的嵌入式軟體系統開發,由於需要學習的內容較多,學習時間較長,那麼學習起來就有一定的難度,工資也相對高一些。
課程內容主要包括:
①C,Java核心編程:c語言核心編程,Java核心編程;
②Linux核心操作與演算法:Linux系統使用,Linux-c編程核心技術,精品數據結構,Linux-c編程精髓;
③核心操作與演算法:Linux系統編程,Linux網路編程核心技術,UI編程,Java核心編程,安卓核心技術;
④ARM+Linux底層開發:數字電路,ARM編程核心,Linux系統開發,嵌入式Linux驅動開發;
⑤大型項目實踐:每期安排各類型真實的項目,詳細可以找我要資料。
互聯網行業目前還是最熱門的行業之一,學習IT技能之後足夠優秀是有機會進入騰訊、阿里、網易等互聯網大廠高薪就業的,發展前景非常好,普通人也可以學習。
想要系統學習,你可以考察對比一下開設有相關專業的熱門學校,好的學校擁有根據當下企業需求自主研發課程的能力,能夠在校期間取得大專或本科學歷,中博軟體學院、南京課工場、南京北大青鳥等開設相關專業的學校都是不錯的,建議實地考察對比一下。
祝你學有所成,望採納。
『玖』 linux驅動開發要有哪些基礎
需要一定的努力才可以學好:
Linux設備驅動是linux內核的一部分,是用來屏蔽硬體細節,為上層提供標准介面的一種技術手段。為了能夠編寫出質量比較高的驅動程序,要求工程師必須具備以下幾個方面的知識:
1、 熟悉處理器的性能
如:處理器的體系結構、匯編語言、工作模式、異常處理等。對於初學者來說,在還不熟悉驅動編寫方法的情況下,可以先不把重心放在這一項上,因為可能因為它的枯燥、抽象而影響到你對設備驅動的興趣。隨著你不斷地熟悉驅動的編寫,你會很自然的意識到此項的重要性。
2、掌握驅動目標的硬體工作原理及通訊協議
如:串口控制器、顯卡控制器、硬體編解碼、存儲卡控制器、I2C通訊、SPI通訊、USB通訊、SDIO通訊、I2S通訊、PCI通訊等。編寫設備驅動的前提就是需要了解設備的操作方法,所以這些內容的重要程度不言而喻。但不是說要把所有設備的操作方法都熟悉了以後才可以寫驅動,你只需要了解你要驅動的硬體就可以了。
一、掌握硬體的控制方法
如:中斷、輪詢、DMA 等,通常一個硬體控制器會有多種控制方法,你需要根據系統性能的需要合理的選擇操作方法。初學階段以實現功能為目的,掌握的順序應該是,輪詢->中斷->DMA。隨著學習的深入,需要綜合考慮系統的性能需求,採取合適的方法。
二、良好的GNU C語言編程基礎
如:C語言的指針、結構體、內存操作、鏈表、隊列、棧、C和匯編混合編程等。這些編程語法是編寫設備驅動的基礎,無論對於初學者還是有經驗者都非常重要。
三、 良好的linux操作系統概念
如:多進程、多線程、進程調度、進程搶占、進程上下文、虛擬內存、原子操作、阻塞、睡眠、同步等概念及它們之間的關系。這些概念及方法在設備驅動里的使用是linux設備驅動區別單片機編程的最大特點,只有理解了它們才會編寫出高質量的驅動。
四、掌握linux內核中設備驅動的編寫介面
如:字元設備的cdev、塊設備的gendisk、網路設備的net_device,以及基於這些基本介面的framebuffer設備的fb_info、mtd設備的mtd_info、tty設備的tty_driver、usb設備的usb_driver、mmc設備的mmc_host等。
『拾』 linux主機側與設備側USB驅動
USB採用樹形拓撲結構,主機側和設備側的USB控制器分別稱為主機控制器((Host Controller)和USB設備控制器(UDC),每條匯流排上只有一個主機控制器,負責協調主機和設備間的通信,而設備不能主動向主機發送任何消息。
在Linux系統中,USB驅動可以從兩個角度去觀察,一個角度是主機側,一個角度是設備側。從上圖主機側去看,在Linux驅動中,處於USB驅動最底層的是USB主機控制器硬體,在其上運行的是USB主機控制器驅動,在主機控制器上的為USB核心層,再上層為USB設備驅動層(插入主機上的U盤、滑鼠、USB轉串口等設備驅動)。因此,在主機側的層次結構中,要實現的USB驅動包括兩類:USB主機控制器驅動和USB設備驅動,前者控制插入其中的USB設備,後者控制USB設備如何與主機通信。Linux內核中的USB核心負責USB驅動管理和協議處理的主要工作。主機控制器驅動和設備驅動之間的USB核心非常重要,其功能包括:通過定義一些數據結構、宏和功能函數,向上為設備驅動提供編程介面,向下為USB主機控制器驅動提供編程介面;維護整個系統的USB設備信息;完成設備熱插拔控制、匯流排數據傳輸控制等。