原创 ARM cortex a 之串口通信2

現在開始編程。先寫一個大的函數:void main(void){ uart_init(); uart_putc('a');  //發送數據 //uart_getc();  //接收數據}然後分別寫三個小的子函數先在宏定義中聲明各個寄存器的

原创 ARM cortex a 的SDRAM (DDR)

下面介紹一下SDRAM的初始化工作。  SDRAM是同步動態隨機存儲器,需要初始化才能正常使用,但是可惜它的初始化太麻煩,裏面涉及的東西也是非常之多,那麼下面我們概括地分析一下它到底需要哪些初始化步驟:  以三星公司的S5PV210系列芯片

原创 C語言 之建立動態鏈接庫

下面我們建立一個動態鏈接庫。回顧上篇文章講的建立靜態鏈接庫,我們把這幾個文件丟到一個新的目錄下:makefile tiaoshen.c  mmc.h xu.c你也可以自己建立新的文件,這裏不再贅述。makefile文件中改成all: gcc

原创 C語言 之遞歸函數

今天來總結一下關於遞歸函數的使用方面的問題。  遞歸函數就是在函數使用的時候自己調用自己,層層調用,來實現你想要的功能。  有兩個最常用的例子,我們來寫一下。  (1)計算階乘#include <stdio.h>int factorial(

原创 嵌入式專業名詞整理(以後會不斷完善)

Activate激活Assert 維護堅持,斷言,聲稱audio音頻的 (BRG)bus bridgesbus system總線系統   classification分類類別,等級CLOCK GATING時鐘閘(CMU)clockmanag

原创 ARM cortex a 的串口通信

這次來深入學習一下ARM串口通信的相關知識。以三星公司的S5PV210系列爲原型,通用異步接收機和發射機(UART)S5PV210提供四個獨立異步接口:串行輸入/輸出(I / O)端口。所有的端口操作在一個基於中斷或DMA的模式。UART通

原创 C語言 之建立靜態鏈接庫

下面說一下建立靜態鏈接庫的方法各個C語言編程軟件都有它的方法,比如建立一個工程來共享文件,這就比較容易和簡單了,現在我們選擇使用難一點的linux系統,探究在linux系統下的建立靜態鏈接庫的方法。首先,在linux系統我們在一個文件夾目錄

原创 ARM cortex a 之時鐘系統2

時鐘的產生:振盪放大器連接到了外部晶體時鐘鎖相環使得低輸入頻率轉換爲高頻時鐘來適應S5PV210要求。它的時鐘發生器塊還包括一個內置的邏輯單元,在每個系統復位後來穩定時鐘頻率。必須注意使用每個時鐘mux開關。對於無干擾的mux開關,必須保證

原创 ARM cortex a 之時鐘系統3

//這是整理的彙編代碼,我們一步步分析一下。// 時鐘控制器基地址#define ELFIN_CLOCK_POWER_BASE 0xE0100000 //我們使用的基地址的原因是所有時鐘寄存器的地址都是在這個基地址上偏移得到的。//下面就是

原创 ARM cortex a 之時鐘系統1

ARM cortex a系列的時鐘系統是一個非常複雜而且麻煩的東西,下面我們首先明確一些概念和東西。本部分主要介紹一下時鐘系統的初始化工作,以及裏面的一些原理。S5PV210的時鐘系統是一個非常麻煩的東西,首先需要時鐘信號的產生,時鐘發生器

原创 icache的方面以及使用

這次學習一下高速緩存icache的功能的開關。 首先鞏固一下這個mrc指令MRC 指令的格式爲:MRC{<cond>}(條件)協處理器編碼,協處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協處理器操作碼2。如 mrc  p15 , 0

原创 cmp bne 以及sub指令的詳解

之前看到過一個延時函數段:delay:     ldr r2, =7000000         ldr r3, =0x0         delay_loop:     sub r2, r2, #1      //r2=r2-1     

原创 關於ARM Cortex a 系列的看門狗定時器

    關於ARM cortex a系列的看門狗定時器,現在以三星公司的S5PV210爲例子,來討論學習一下看門狗定時器的相關知識。剛開始學習使用英文技術手冊,很多都不太習慣,不過還是堅持吧。    看門狗定時器會在由於噪聲或者系統錯誤造成

原创 C語言之 認識可變參數

  printf()的原型是int printf(const char *fmt, ...);後面三個 . 表示C語言的變參。  那麼什麼是變參?它有什麼功能和作用呢?  變參就是參數不確定,可以隨意根據需要來改變的參數。  我們先舉一個固

原创 C語言 之編譯器優化

  C語言的編譯器會對變量和代碼進行一定的優化,我們看下面這個例子。int a,b,c;a=1;b=a;c=b;  這個程序正常運行的時候會這樣子:先把a指向的內存空間內放入1  再把a指向的內存空間裏的數讀出來放到b指向的內存空間,  最