ARM裸機加強版

從 百问网嵌入式Linux wiki
跳到: 導覽搜尋
歡迎來到第一期ARM裸機加強版Wiki教程
  • 第一期ARM裸機加強版視頻教程是基於JZ2440,Ubuntu16.04系統進行視頻講解操作
  • 考慮到視頻教程知識點過多,一時無法全部理解,故將視頻內容整理成文檔供參考。由於工作量大,文檔中難免會出現遺漏或者錯誤,請大家看到後及時指正
  • 歡迎大家對wiki提出建議,共同努力,共同成長

本教程的開發環境

  • 電腦系統 Windows7 / Windows10
  • 百問網提供的虛擬機系統Ubuntu16.04
  • 視頻配套開發板:JZ2440 V3
  • 部分學員反饋ubuntu16.04虛擬機使用時黑屏或者無法打開,影響學習進度,現製作一個新的虛擬機系統供大家備用,內含有使用文檔。連結:https://pan.baidu.com/s/1R1K_OjGyMqtbLglaZnB20Q 密碼:e51n
  • 如有問題請添加QQ群:562614605反饋。
第一期ARM裸機加強版Wiki教程目錄
ARM裸機加強版WiKi ARM裸機加強版WiKi_PDF文檔


第一期ARM裸機加強版課程目錄
ARM裸機1期加強版1 ARM裸機1期加強版2
  • 第001課_不要再用老方法學習單片機和ARM(免費)
    • 第001節_單片機程式設計師發展的必選之路: Linux
    • 第002節_單片機知識是Linux驅動開發的基礎之一
    • 第003節_單片機和Linux都想學_換個兩全的方法學習單片機
  • 第002課_ubuntu圖形界面操作(免費)
    • 第000節_安裝百問網製作的ubuntu16.04虛擬機
    • 第001節_新建目錄_新建並編輯文件
    • 第002節_word_excel_ppt的操作
    • 第003節_圖片瀏覽_音樂播放_視頻播放
    • 第004節_網絡設置_網頁瀏覽_在線聽歌_在線看視頻
    • 第005節_ubuntu軟件下載中心
    • 第006節_ubuntu系統設置詳細講解
    • 第007節_linux目錄結構初體驗
  • 第003課_linux入門命令
    • 第001節_linux命令入門演示
    • 第002節_shell命令解析器功能說明
    • 第003節_linux命令提示符和linux命令格式
    • 第004節_linux常用命令引入
    • 第005節_pwd命令__獨家記憶方法
    • 第006節_cd命令講解1__獨家記憶方法
    • 第007節_linux基礎知識__家目錄_當前路徑
    • 第008節_linux基礎知識__上一個路徑_上一次路徑
    • 第009節_linux基礎知識__linux目錄結構介紹
    • 第010節_linux基礎知識__絕對路徑和相對路徑
    • 第011節_cd命令講解2_注意事項
    • 第012節_ls命令__獨家記憶方法
    • 第013節_目錄操作mkdir和rmdir_獨家記憶方法
    • 第014節_文件操作touch_mv_cp_rm
    • 第015節_文件查看和編輯cat_gedit
    • 第016節_清除螢幕_clear和reset
    • 第017節_幫助信息man_info_help
  • 第004課_vi編輯器
    • 第001節__vi編輯器課程特色和課程綱要
    • 第002節_vi編輯器的引入
    • 第003節__vi編輯器的三種模式__模式間相互切換
    • 第004節__文件的打開_新建_保存
    • 第005節__如何使vi快速移動光標__vi的難點
    • 第006節__文本複製_粘貼_刪除_撤銷__百問網獨家記憶方法
    • 第007節__文本查找和替換__百問網獨家記憶方法
  • 第005課_linux進階命令
    • 第001節__find查找文本
    • 第002節_grep查找字符串
    • 第003節__file查看文件類型
    • 第004節__which和whereis查找命令所在位置
    • 第005節__gzip和bzip2單個文件的壓縮和解壓
    • 第006節__tar多個文件和目錄的壓縮和解壓
  • 第006課_開發板熟悉與體驗(免費)
    • 第001節_開發板接口介紹與串口連接
    • 第002節_使用eop燒寫裸板程序
    • 第003節_eop常見問題
    • 第004節_使用uboot燒寫裸板程序
    • 第005節_恢復出廠系統
    • 第006節_一句話解決嵌入式開發ping問題
  • 第007課_裸機開發步驟和工具使用(免費)
    • 第001節_裸機開發步驟簡介
    • 第002節_source insight代碼查看工具的使用
    • 第003節_Notepad編輯器和二進制文件查看工具
  • 第008課_第1個ARM裸板程序及引申(部分免費)
    • 第001節_輔線1_硬件知識_LED原理圖
    • 第002節_輔線1_硬件知識_S3C2440啟動流程與GPIO操作
    • 第003節_編寫第1個程序點亮LED
    • 第004節_匯編與機器碼
    • 第005節_編程知識_進制
    • 第006節_編程知識_字節序_位操作
    • 第007節_編寫C程序控制LED
    • 第008節_幾條匯編指令_bl_add_sub_ldm_stm
    • 第009節_解析C程序的內部機制
    • 第010節_完善LED程序_編寫按鍵程序
  • 第009課_gcc和arm-linux-gcc和Makefile
    • 第001節gcc編譯器1_gcc常用選項__gcc編譯過程詳解
    • 第002節gcc編譯器2_深入講解連結過程
    • 第003節c語言指針複習1__指向char和int的指針
    • 第004節c語言指針複習2_指向數組和字符串的指針
    • 第005節Makefile的引入及規則
    • 第006節Makefile的語法
    • 第007節Makefile函數
    • 第008節Makefile實例
  • 第010課_掌握ARM晶片時鐘體系
    • 第001節_S3C2440時鐘體系結構
    • 第002節_編程提高運行時鐘
  • 第011課_串口(UART)的使用
    • 第001節_輔線1_硬件知識_UART硬件介紹
    • 第002節_S3C2440_UART編程
    • 第003節_從零實現用於裸機調試的printf函數_手動確定可變參數
    • 第004節_從零實現用於裸機調試的printf函數_自動確定可變參數
    • 第005節_從零實現用於裸機調試的printf函數_printf函數在x86和arm平台的實現
  • 第012課內存控制器與SDRAM
    • 第001節_輔線1_硬件知識_內存接口概念
    • 第002節_輔線1_硬件知識_不同位寬設備的連接
    • 第003節_輔線1_硬件知識_時序圖分析示例
    • 第004節_輔線1_硬件知識_SDRAM的設置
  • 第013課_代碼重定位
    • 第001節_段的概念_重定位的引入
    • 第002節_連結腳本的引入與簡單測試
    • 第003節_連結腳本的解析
    • 第004節_拷貝代碼和連結腳本的改進
    • 第005節_代碼重定位與位置無關碼
    • 第006節_重定位_清除BSS段的C函數實現
  • 第014課_異常與中斷
    • 第001節_中斷異常概念引入與處理流程
    • 第002節_CPU模式(Mode)_狀態(State)與寄存器
    • 第003節_不重要_Thumb指令集程序示例
    • 第004節_und異常模式程序示例
    • 第005節_swi異常模式程序示例
    • 第006節_按鍵中斷程序示例_概述與初始化
    • 第007節_按鍵中斷程序示例_完善
    • 第008節_定時器中斷程序示例
  • 第015課_NOR Flash
    • 第001節_Nor Flash原理及硬件操作
    • 第002節_Nor Flash編程_識別
    • 第003節_Nor Flash編程_擦寫讀
  • 第016課_Nand Flash
    • 第001節_NAND_FLASH操作原理
    • 第002節_NandFlash時序及初始化
    • 第003節_NandFlash的晶片id讀取
    • 第004節_NAND_FLASH數據讀取
    • 第005節_NandFlash的擦除與燒寫
ARM裸機1期加強版3 新1期與2期間的銜接課程
  • 第017課_LCD
    • 第001節_LCD硬件原理
    • 第002節_S3C2440_LCD控制器
    • 第003節_LCD編程_框架與準備
    • 第004節_LCD編程_抽象出重要結構體
    • 第005節_LCD編程_LCD控制器
    • 第006節_LCD編程_LCD設置
    • 第007節_LCD編程_簡單測試
    • 第008節_LCD編程_畫點線圓
    • 第009節_LCD編程_顯示文字
    • 第010節_LCD編程_添加除法
    • 第011節_LCD編程_使用調色板
  • 第018課_ADC和觸摸屏
    • 第001節_ADC硬件原理
    • 第002節_ADC編程
    • 第003節_電阻觸摸屏硬件原理
    • 第004節_S3C2440觸摸屏接口
    • 第005節_觸摸屏編程_按下鬆開檢測
    • 第006節_觸摸屏編程_ADC中斷
    • 第007節_觸摸屏編程_定時器程序優化
    • 第008節_觸摸屏編程_使用定時器支持長按
    • 第009節_觸摸屏編程_較准原理
    • 第010節_觸摸屏編程_較准與畫線編程
    • 第011節_觸摸屏編程_測試
    • 第012節_觸摸屏編程_完善
  • 第019課_I2C裸板
    • 第001節_I2C協議與EEPROM
    • 第002節_S3C2440的I2C控制器
    • 第003節_程序框架
    • 第004節_I2C控制器編程_框架
    • 第005節_I2C控制器編程_中斷
    • 第006節_EEPROM編程和測試代碼
    • 第007節_測試
  • 第020課_SPI編程
    • 第001節_SPI協議介紹
    • 第002節_使用GPIO實現SPI協議操作OLED
    • 第003節_SPI_FLASH編程_讀ID
    • 第004節_SPI_FLASH編程_讀寫
    • 第005節_在OLED上顯示ADC的值
    • 第006節_使用SPI控制器
    • 第007節_移植到MINI2440_TQ2440
    • 第021課_MMU和Cache
    • 第001節_Cache簡述及協處理器指令
    • 第002節_協處理器指令_開啟ICache代碼示例
    • 第003節_MMU及地址映射
    • 第004節_MMU代碼示例
  • 第022課_傳感器
    • 第001節_光敏電阻的使用
    • 第002節_高精度延時函數
    • 第003節_DHT11溫濕度傳感器的使用
    • 第004節_DS18B20溫度傳感器介紹
    • 第005節_DS18B20溫度傳感器編程
    • 第006節_紅外線遙控協議簡介及編程思路
    • 第007節_前期編程_系統時間與環型緩衝區
    • 第008節_HS0038紅外線接收器的編程_打印原始脈衝
    • 第009節_HS0038紅外線接收器的編程_解析數據
  • 第001課_u-boot分析與使用
    • 第001節_u-boot分析之編譯體驗
    • 第002節_u-boot分析之Makefile結構分析
    • 第003節_u-boot分析之源碼第1階段
    • 第004節_u-boot分析之u-boot命令實現
    • 第005節_u-boot分析_uboot啟動內核
    • 第006節_u-boot分析之源碼第2階段
  • 第002課_從0寫bootloader_更深刻理解bootloader
    • 第001節_自己寫bootloader之編寫第1階段
    • 第002節_自己寫bootloader之編寫第2階段
    • 第003節_自己寫bootloader之編譯測試
    • 第004節_自己寫bootloader之改進
  • 第003課_內核配置裁剪及啟動流程
    • 第001節 內核啟動流程分析之編譯體驗
    • 第002節 內核啟動流程分析之配置
    • 第003節 內核啟動流程分析之Makefile
    • 第004節 內核啟動流程分析之內核啟動
  • 第004課_根文件系統
    • 第001節_構建根文件系統之啟動第1個程序
    • 第002節_構建根文件系統之init進程分析
    • 第003節_構建根文件系統之busybox
    • 第004節_構建根文件系統之構建根文件系統
  • 第005課_驅動入門_字符設備驅動
    • 第001節_字符設備驅動程序之概念介紹
    • 第002節_字符設備驅動程序之LED驅動程序_編寫編譯
    • 第003節_字符設備驅動程序之LED驅動程序_操作LED
    • 第004節_字符設備驅動程序之LED驅動程序_測試改進
    • 第005節_字符設備驅動程序之查詢方式的按鍵驅動程序
    • 第006節_字符設備驅動程序之中斷方式的按鍵驅動_Linux異常處理結構
    • 第007節_字符設備驅動程序之中斷方式的按鍵驅動_Linux中斷處理結構
    • 第008節_字符設備驅動程序之中斷方式的按鍵驅動_編寫代碼
    • 第009節_字符設備驅動程序之poll機制
    • 第010節_字符設備驅動程序之異步通知
    • 第011節_字符設備驅動程序之同步互斥阻塞



學習目標 掌握寫匯編代碼的能力,可以分析任意裸板包括 u-boot、內核里的相關匯編代碼 掌握常用的硬件部件操作,比如 GPIO,UART,I2C,LCD,觸摸屏; 可以寫出這些硬件部件的裸板程序 深入理解 ARM 體系統架構,可以寫出具備中斷功能的裸板程序,對程序現場的保存、恢復有所了解,這些原理適用於任何架構 CPU,內核及應用程式 熟悉裸板程序的結構,給你一個 bootloader 就能分析它的初始化部分、內存使用情況、連結地址、重定位、程序的相對跳轉/絕對跳轉等 掌握 bootloader 啟動內核的原理,能完全自己寫出一個 bootloader、字符設備驅動


產品詳情介紹 ARM裸機加強版論壇