在此之前,在其他平台上應用i2c匯流排使用者介面(ioctrl)進行訪問eeprom,具體可以參考「嵌入式linux下 24系列eeprom/fram驅動」文章。現將其移植到rk3399平台執行。
編譯系統:ubuntu16.04
arm硬體:firefly rk3399
arm系統:firefly ubuntu16.04(sdk)
連線i2c:i2c4
eeprom:at24c02
電路原理圖:
首先使用「i2ctools」工具檢視硬體連線是否正常。
i2c匯流排已經正確識別到到at24c02,根據電路原理圖位址線a0—a2接地,所以0x50是at24c02的器件位址。0x51—0x57是24系列高容量型號晶元的位址(24c04—24c16)。
本次硬體使用的是at系列eeprom,選擇「at24cxx」目錄原始碼。
/* 修改eeprom資料結構描述 */
/** * @brief device init
*/const _24cxx_dev_t at24cxx_dev =
;/* 修改測試資料大小 */
#define wr_size (256)
/* 24c02容量 */
#define wr_addr 0
#
# makefile for the at24cxx.
#version =1.00
cc =aarch64-linux-gnu-gcc #選擇rk3399交叉編譯器
debug =
cflags =-wall
sources =
$(wildcard *.c)
$(wildcard ../24cxx/*.c)
includes =-i../24cxx
lib_names =
lib_path =
obj =
$(patsubst %.c, %.o, $(sources)
)target =at24
#links
$(target)
:$(obj)
@mkdir -p output
$(cc)
$(obj)
$(lib_path)
$(lib_names)
-o output/$(target)
$(version)
@rm -rf $(obj)
#compile
%.o: %.c
$(cc)
$(includes)
$(debug)
-c $(cflags)
$< -o $@
.phony:clean
clean:
@echo "remove linked and compiled files......"
rm -rf $(obj)
$(target)
output
執行「make」編譯,編譯成功,在「output」目錄生成執行檔案「at241.00」。將檔案拷貝到rk3399板子,執行「chmod 777 at241.00」更改執行屬性。
程式執行符合預期,i2c使用者態訪問eeprom正確。另外,也可以結合「i2ctools」工具驗證程式讀寫正確性。
RK3399晶元規格書,RK3399參考設計方案
rk3399晶元規格書,rk3399參考設計方案 較新的rk3368雖然專門針對電視盒子做了優化,但是其硬體效能相比上一代的rk3288還要孱弱,老當益壯的rk3288退休不得,與rk3368勉力維持著瑞芯微2015年的江山。進入2016年,瑞芯微rockchip再次調轉槍頭,緊跟行業趨勢,順勢而為...
RK3399 產品選擇
rk3399 是一款的arm64處理器,其內部整合gpu,對多 人臉識別等,支援都非常不錯。在國內,選擇以rk3399為核心,開發產品的知名公司,有很多。就我個人而言,主要使用過兩家公司的開發板。1 firefly rk3399 開發板 2 nanopc t4開發板 兩家公司可能側重點不同,產品特性...
RK3399的環境搭建
之前的工作內容大多為除錯各部分的硬體和系統的bug,真正編寫 的機會很少,或者說根本沒有。首先,要達到乙個基本的目的,在ubuntu18.04的pc機上,編寫出的程式可以在板子上跑的通。很簡單,只要安裝交叉編譯工具鏈即可。sudo apt get install gcc 5 aarch64 linu...