linux 是乙個執行在保護模式下的 32 位作業系統,採用 flat memory 模式,目前最常用到的是 elf 格式的二進位制**。乙個 elf 格式的可執行程式通常劃分為如下幾個部分:.text、.data 和 .bss,其中 .text 是唯讀的**區,.data 是可讀可寫的資料區,而 .bss 則是可讀可寫且沒有初始化的資料區。**區和資料區在 elf 中統稱為 section,根據實際需要你可以使用其它標準的 section,也可以新增自定義 section,但乙個 elf 可執行程式至少應該有乙個 .text 部分。
我們在mx27的nandboot中可以看到幾個標頭檔案:
mx27.h mx27ads.h hal_platform_setup.h
其中hal_platform_setup.h就是arm初始化開始的一些彙編操作。
那麼首先看看hal_platform_setup.h該檔案,另外兩個標頭檔案就不多說了,只介紹用到的一些定義
#define soc_si_id_reg 0x10027800 ---定義在page145頁,可以看到該晶元的id
#define _reg_soc_si_id_reg (*((volatile unsigned long *)(soc_si_id_reg)))
static void setup_iomux(void) --設定gpio腳的功能,是復用還是常用的gpio
/* enable clock for hclk brom and uart_1 */
_reg_crm_pccr1 |= 0x80400400; ----設定pccr1-0x10027024,該暫存器和上面的pcdr是關聯的暫存器,該暫存器就像是開關,將上面設定好的各個模組的頻率,如果要達到某個模組,那麼需要用這個暫存器來使能,該暫存器的名稱就是: 外圍裝置時鐘控制暫存器,和上面的pcdr :外圍裝置時鐘分頻設定暫存器, 注意兩者區別!
下面的這個需要說明的是,mx27的管腳功能定義非常的豐富,舉個例子:
封裝中的d24腳,
1.它分為復用功能腳,或者是gpio腳,可以選擇!
2.如果是復用功能腳,那麼還要選擇是主復用功能(usbth1_txdp),還是次復用功能(uart4_cts)
3.如果選擇的是gpio腳,那麼要選擇是否上拉,或者直接三態設定,input或者是output的選擇!
gius和gpr暫存器設定,具體檢視我的mx27應用手冊中的第六章
/* set up gpio/iomux for uart_1 */ 檢視page 254
_reg_gpio_gius(gpioe) &= 0xffff0fff; /* clear bit 12-bit 15 of gius_e */
_reg_gpio_gpr(gpioe) &= 0xffff0fff; /* clear bit 12-bit 15 of gpr_e */
設定檢視page 227中的pe7 uart2_rx 和pe6 uart2_tx
_reg_gpio_gius(gpioe) &= ~0x00000d8; /* port e pin 3,4,6,7 for uart2 */
_reg_gpio_gpr(gpioe) &= ~0x00000d8; /* port e pin 3,4,6,7 for primary function */
}
參考:
彙編基礎學習27
文章 http www.mcany.cn article 302.htm 博主 沒落的殘陽 這節來學習下有符號整數的乘法運算,imul指令。這個指令保留了乘積的符號位。imul指令,ia 32指令集中有三種格式 單運算元 雙運算元和三運算元。在單運算元格式中,乘數和被乘數尺寸大小相同,乘積的大小是乘...
AT T彙編簡介
1.暫存器引用 引用暫存器要在暫存器號前加百分號 如 movl eax,ebx 80386有如下暫存器 8個32 bit暫存器 eax,ebx,ecx,edx,edi,esi,ebp,esp 8個16 bit暫存器,它們事實上是上面8個32 bit暫存器的低16位 ax,bx,cx,dx,di,si...
彙編程式設計簡介
如今需要用彙編寫東西的場合是越來越少了,除了bootloader之類的應用,就是對 片斷進行優化,再有就是反向工程了。而真正要能在現代系統上玩轉彙編,需要對cpu架構 計算機結構 作業系統 工具鏈都有深入的了解,是非常有挑戰的。講的時候展示了 rockplayer 內部的彙編優化情況,順便也滿足了一...