原创 RT-thread下ARM926EJS的CPU移植SPI 並掛載w25q128

1:環境 芯片:NUC977 CPU: ARM926EJS OS:RT-Thread 2:RT-thread下架構分析 上圖時SPI所在的驅動架構 其中已經有的是SPI 的驅動 nuc97x_spi.c SPI驅動框架需要在

原创 Makefile傳遞參數

CFLAGS:=${CFLAG} CFLAGS+= -g -Wall object:=debug debug:debug.c gcc ${CFLAGS} debug.c -o ${object} clean:

原创 延遲綁定(PLT)

ELF動態連接時,會PLT(procesure linkage table)的方式來進程鏈接其他模塊的函數。就時不會把所有的函數都鏈接號,而是在第一次去調用的時候區連接 #include<stdio.h> #include<std

原创 #define DEBUG(format, ...) 以及 #、##、__VA_ARGS__和##__VA_ARGS__的作用

#define debug(…) printf(VA_ARGS) 缺省號代表一個可以變化的參數表。使用保留名 VA_ARGS 把參數傳遞給宏。當宏的調用展開時,實際的參數就傳遞給 printf()了。例如: Debug(“Y =

原创 可變參數, printf 實現的原理 ,va_start和va_end

對於可變參數的函數可以,使用下面的宏來,獲取輸入的每一個參數 這些宏定義在stdarg.h中 typedef char *va_list; va_start宏,獲取可變參數列表的第一個參數的地址(list是類型爲va_li

原创 堆棧全局區常量區代碼區

代碼區:存放程序的代碼,即CPU執行的機器指令,並且是隻讀的。 常量區:存放常量(程序在運行的期間不能夠被改變的量,例如: 10,字符串常量”abcde”, 數組的名字等) 靜態區(全局區):靜態變量和全局變量的存儲區域是一起的

原创 數組和指向數組的指針的關係

看下面的程序,輸入什麼? #include<stdio.h> int main() { int a[] = {1, 2, 3, 4, 5}; int *p = (int *)(&a+1);

原创 顯示運行時鏈接(dlopen,dlsym,dlerror,dlclose,)

支持動態鏈接的系統往往支持一種更靈活的模塊加載方式,叫做顯示運行時鏈接(Eplict Run-time Linking),有時也叫做運行時加載。 就是在代碼中運行時,調用動態庫(.so文件),並調用這個動態庫的內部函數。 主要有以

原创 open函數的使用

簡述:open是UNIX系統(包括LINUX、Mac等)的系統調用函數,區別於C語言庫函數fopen。 #include<fcntl.h> #include<unistd.h> int open(constchar*pathnam

原创 U-boot 2016.11移植到ARM926EJS -- 搭建篇

從官網下載u-boot的程序:ftp://ftp.denx.de/pub/u-boot/ 1:添加與修改板級文件 所在目錄 board 例如對比: u-boot-2016.11/board/samsung/smdk2410 1.

原创 U-boot 2016.11移植到ARM926EJS --驅動篇

本次記錄在u-boot下添加驅動的過程。 例如:板級文件u-boot-2016.11/board/nuvoton/nuc970/nuc970.c中調用看門狗的的初始化,那u-boot下就要添加對應的驅動, 否則的話就會保錯: 以

原创 STM32F407利用RT-thread上移植LWIP

參考:網絡協議棧驅動移植 1:環境 芯片:STM32F407 開發板:正點原子探索版 PHY:LAN8720A 接口:RMII STM32F407自帶以太網模塊, 與外部PHY芯片通過RMII接口連接。 2:配置ETH 3:配

原创 利用RT-thread 在STM32F407在W25Q128上實現虛擬文件系統

1:環境 STM32F407板子上有一個W25Q128的flash芯片。通過SPI連接在一起 W25Q128 (128M-bit),被組織爲65536個可編程的頁,每頁256bytes。擦除方式分爲16頁一組(即一個扇區4kby

原创 使用CubeMX配置STM32的外設

使用CubeMX配置STM32的外設, 在板級文件中一般都可以使用CubeMX直接配置外設,並可以使用 不需要再手動配置寄存器 打開下面的配置文件 配置時鐘 配置UART 配置FSMC 對應文件 配置後會更新對應的三個文件

原创 RT-thread 中Kconfig簡單配置

在Kconfig中添加一個示例 如下:分別是三個類型, bool型, string型,int型 menu "hello module" config RT_USING_HELLO bool "Enable