RK3399 使用者態操作EEPROM

2021-10-02 07:39:01 字數 1904 閱讀 8500

在此之前,在其他平台上應用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...