ARM開發教程之ARM體系的嵌入式系統BSP的程序設計

2020-12-07 電子發燒友

  ARM公司在32 位RISC 的CPU開發領域不斷取得突破,其結構已經從V3發展到V6。BSP( Board Support Package )板級支持包介於主板硬體和作業系統之間,其功能與PC機上的BIOS 相類似,主要完成硬體初始化並切換到相應的作業系統。BSP是相對於作業系統而言的,不同的作業系統對應於不同定義形式的BSP,例如VxWorks 的BSP和Linux 的BSP相對於某一CPU來說, 儘管實現的功能一樣, 可是寫法和接口定義是完全不同的。另外,仔細研究所用的晶片資料也十分重要, 例如儘管ARM在內核上兼容, 但每家晶片都有自己的特色。所以這就要求BSP程式設計師對硬體、軟體和作業系統都要有一定的了解。

  本文介紹基於ARM體系的嵌入式應用系統初始化部分BSP的程序設計。本文引用的源碼全部是基於HMS320C7202晶片設計,並已成功運行。

  1 ARM開發教程之初始化過程

  儘管各種嵌入式應用系統的結構及功能差別很大, 但其系統初始化部分完成的操作有很大一部分是相似的。嵌入式系統的啟動流程如圖1 所示。

  1.1 設置入口指針

  啟動程序首先必須定義指針, 而且整個應用程式只有一個入口指針。一般地, 程序在編譯連結時將異常中斷向量表連結在0 地址處,並且作為整個程序入口點。入口點代碼如下:

  ENTRY( _start ) ;開始

  1.2 ARM 開發教程之設置異常中斷向量表

  ARM要求中斷向量表必須放置在從0 開始、連續8×4位元組的空間內。各異常中斷向量地址以及中斷的算是優先級如表1:

相關焦點

  • 嵌入式Linux開發環境的搭建之:嵌入式開發環境的搭建
    本文引用地址:http://www.eepw.com.cn/article/257141.htm5.1嵌入式開發環境的搭建5.1.1嵌入式交叉編譯環境的搭建linux作業系統文章專題:linux作業系統詳解(linux不再難懂)交叉編譯的概念在第4章中已經詳細講述過,搭建交叉編譯環境是嵌入式開發的第一步,也是必備的一步。
  • arm開發板與樹莓派有什麼區別
    一個是固定的平臺,更像是電腦的硬體平臺,接口和引出的引腳很少,只能接屏幕,網絡等等,獨立的引腳很少,沒開發板那麼靈活   ARM更加底層,樹莓派把複雜的底層開發工作給封裝起來,所以更容易入門   樹莓派和其他 arm 開發板的本質區別   樹莓派的定位並不是一塊用來做嵌入式開發的開發板,而是一個廉價並且高性價比的可以在一定程度取代
  • PCBA與嵌入式開發
    基於PCBA板的嵌入式系統的開發嵌入式系統的開發分為嵌入式軟體開發和嵌入式硬體開發,PCBA正是嵌入式硬體開發的基礎。什麼是嵌入式系統(1) 嵌入式系統的基本介紹嵌入式系統應定義為:嵌入到對象體系中的專用計算機系統。嵌入性、專用性與計算機系統是嵌入式系統的三個基本要素。嵌入式開發就是指在嵌入式作業系統下進行開發,一般常用的系統有ucos,linux,android等。
  • 嵌入式作業系統移植實例:使用ADS移植uC/OS-II
    選擇開發工具在嵌入式系統設計中,開發工具的選取是一個重要的考慮因素,通常這是與開發項目的需求和應用背景相關。一般嵌入式開發工具包含用於目標系統的交叉編譯器、連接器、調試器以及輔助處理用的二進位文件分析工具等。
  • 嵌入式Linux的GDB調試環境建立
    嵌入式Linux的GDB調試環境由Host和Target兩部分組成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。
  • ARM指令學習筆記
    有了個簡單了解之後,開始投入到了arm指令的學習。參考"arm百度百科","NDS百度百科"本文引用地址:http://www.eepw.com.cn/article/201611/316807.htm接下來就是對arm指令的學習。因為有過前面8086指令的學習,並且也寫過像高精度計算這樣的彙編程序,看arm指心裏面老在比較這兩套指令。
  • arm 微學術 架構_arm彙編 - CSDN
    1)硬體上電的初始化代碼是用彙編代碼編寫;    2)調試代碼時,問題的解決有可能看彙編代碼;    3)系統調優(提高產品整體運行效率);        memcpy:C語言函數原型                     :彙編代碼 - 效率更高    4)有些邏輯,拿C語言無法實現         例如,用c訪問
  • ARM Linux根文件系統Root Filesystem的製作
    /sys用於掛載「sysfs文件系統」,「sysfs文件系統」在內核裡面可以選。目前我認為它就是給udev提供支持的,。「sysfs文件系統」也需要使用初始化腳本掛載。另外還可以有/tmp、/mnt、/swp、/var這樣的不是嵌入式系統必須的目錄,在說完Shell的製作之後,我再談建立目錄的事情。
  • 一文看懂arm架構和x86架構有什麼區別
    本文主要介紹的是arm架構和x86架構的區別,首先介紹了ARM架構圖,其次介紹了x86架構圖,最後從性能、擴展能力、作業系統的兼容性、軟體開發的方便性及可使用工具的多樣性及功耗這五個方面詳細的對比了arm架構和x86架構的區別,具體的跟隨小編一起來了解一下。
  • 在VIM中實現對嵌入式軟體的調試
    引 言 GNU免費提供了一整套工具鏈,為嵌入式Linux程序的開發和調試提供了完整的支持。因此,在VIM中實現對嵌入式軟體的調試,我們便得到了一個高效、穩定的嵌入式Linux的開發環境。
  • ARM微處理器的uC/OS的移植設計
    概述本文引用地址:http://www.eepw.com.cn/article/201609/304152.htm嵌入式作業系統μC/OS-II是一個公開原始碼的佔先式多任務的微內核RTOS,其特點可以概括為以下幾個方面:公開原始碼,代碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。
  • ARM DS-5開發STM32程序(Eclipse配合Keil插件使用)
    ARM DS-5是基於Eclipse的ARM開發環境,有完善的編譯流程,配合Keil插件開發STM32效果更佳。http://pan.baidu.com/s/1mgHX2JY補充:社區版激活代碼:http://ds.arm.com/zh-cn/ds-5-community-edition/getting-started/3.運行DS-5安裝Keil插件安裝好Keil插件後只是使用了Keil的調試和下載功能,真正與DS-5合體需要在Eclipse
  • 淺談avr和arm的區別
    AVR單片機內嵌高質量的Flash程序存儲器,擦寫方便,支持ISP和IAP,便於產品的調試、開發、生產、更新。內嵌長壽命的EEProm可長期保存關鍵數據,避免斷電丟失。片內大容量的RAM不僅能滿足一般場合的使用,同時也更有效的支持使用高級語言開發系統程序,並可像MCS-51單片機那樣擴展外部 RAM。
  • ARM 浮點運算詳解
    浮點模擬器 模擬浮點是利用了undefined instrction handler,在運算過程中遇到浮點計算是產生異常中斷,這麼做帶來的後果是帶來極頻繁的exception,大大增加中斷延遲,降低系統實時性。二:軟浮點技術:軟浮點支持是由交叉工具鏈提供的功能,與Linux內核無關。
  • net-snmp移植到arm
    關於net-snmp的移植,是基於靜態編譯的,動態的沒有做成功,在arm上的移植過程大致如下:如果沒有涉及到擴展agent,則藍色字體不需要理會。tar -xzvf net-snmp-5.4.1.tar.gz,若想擴展agent,則可以將此模塊的.c和.h文件先放到net-snmp-5.4.4/agent/mibgroup下一起配置編譯;例如我這裡想用代理讀寫encoder模塊,那麼先將寫好的encoder源文件複製到net-snmp-5.4.4/agent/mibgroup路徑下;2.CC=arm-linux-gcc
  • ARM學習筆記--GPIO接口
    Makefileled_on.bin : led_on.Sarm-linux-gcc -g -c -o led_on.o led_on.Sarm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elfarm-linux-objcopy -O binary -S led_on_elf
  • ARM板上掛載NFS文件系統
    開發環境主機Host:Windows XP sp3(32bit)本文引用地址:http://www.eepw.com.cn/article/201611/317272.htm客戶機Guest:VMware 7.01上安裝Debian LennyARM板Board:up-tech s3c2410 DVK1.1串口minicom
  • ARM 一些特殊符號
    如果程序中需要$,則用$$來表示,編譯器將不進行變量替換。 注意:在兩個豎線「|」之間的$並不表示進行變量替換,但如果「|」是在雙引號內,則將進行變量替換。 B . //表示程序進入死循環。.為location counter,可在源文件中指示當前地址。該符號可以被引用或賦值。
  • 嵌入式linux新手入門手記-準備qt5.4.1開發平臺
    本文引用地址:http://www.eepw.com.cn/article/201603/287664.htm  那麼,我們正式開始搭建qt的開發平臺,我的ubuntu上安裝的是qt5.4.1,並已經寫了一個hello world的qt程序,這個程序非常簡單,就是運行後在桌面上顯示一個窗口,窗口中顯示一行文字「hello world」,以及一個按鍵。滑鼠點擊按鍵退出程序。