通過(guò)學(xué)習(xí)上期教程,D1 Dock Pro開(kāi)發(fā)板的開(kāi)發(fā)環(huán)境已搭建完成,接下來(lái)我們將開(kāi)始學(xué)習(xí)各項(xiàng)基礎(chǔ)功能的開(kāi)發(fā)。本期我們要演示的是D1 Dock Pr開(kāi)發(fā)板的Button按鍵示例,旨在帶大家通過(guò)示例代碼了解按鍵的簡(jiǎn)單觸發(fā)機(jī)制。
01
準(zhǔn)備工作
建議在操作前先閱讀以下技術(shù)文章:
02
示例介紹
本示例主要使用了chip_d1組件驅(qū)動(dòng)組件里的LRADC。LRADC模塊屬于輸入設(shè)備,一般包括各種按鍵的實(shí)現(xiàn)。當(dāng)用戶按下按鍵的時(shí)候會(huì)觸發(fā)中斷,可以在中斷子程序里面進(jìn)行判斷當(dāng)前的按鍵屬于哪種行為,可以支持多種按鍵模式的觸發(fā)。
涉及到的主要函數(shù)如下:
// 初始化lradc
lradc_status_t csi_lradc_init(void);
// 反初始化lradc
lradc_status_t csi_lradc_deinit(void);
// 注冊(cè)回調(diào)函數(shù)
lradc_status_t csi_lradc_register_callback(lradc_callback_t callback);
具體使用如下:
static void lradc_irq_callback(uint32_t irq_status, uint32_t data)
{
// Here, we only catpure key button's up IRQ to confirm user press key one times
if (irq_status & LRADC_ADC0_UPPEND) {
printf("user key is pressed one times ");
}
}
static int test_lradc(void)
{
int ret = -1;
printf("Run lradc test ");
ret = csi_lradc_init();
if (ret) {
printf("lradc init failed! ");
return -1;
}
csi_lradc_register_callback(lradc_irq_callback);
return 0;
}
03
示例演示
3.1劍池CDK(以下簡(jiǎn)稱CDK)演示
3.1.1示例獲取
雙擊打開(kāi)CDK,點(diǎn)擊工具欄最右側(cè)的平頭哥圖標(biāo)。點(diǎn)擊新建工程按鈕。
在搜索欄里輸入d1, 在結(jié)果里選擇d1_button_demo,點(diǎn)擊右側(cè)的創(chuàng)建工程,版本選擇v7.5.1。
3.1.2編譯
右鍵點(diǎn)擊d1_button_demo工程,選擇build,進(jìn)行編譯,直到結(jié)束。
編譯完成后,可以在工程目錄下out文件夾里找到y(tǒng)oc_rtos_8M.img文件。
3.1.3下載
-
通過(guò)CDK燒寫(xiě)
先連接好硬件JTAG。然后點(diǎn)擊紅色框框處的按鈕開(kāi)始燒寫(xiě)。
燒寫(xiě)完畢之后,按復(fù)位鍵即可啟動(dòng)。
-
通過(guò)全志工具燒寫(xiě)
在沒(méi)有JTAG的情況下,只能通過(guò)全志的PhoenixSuit工具進(jìn)行燒寫(xiě)。將編譯出來(lái)的yoc_rtos_8M.img文件選中,
-
按住FEL按鈕,重新上電后,重啟后固件開(kāi)始燒錄,直到完成。
-
如果當(dāng)前鏡像支持xfex模式燒寫(xiě),直接在串口命令行執(zhí)行“xfex"命令,再執(zhí)行"reboot"命令進(jìn)行重啟,重啟后固件開(kāi)始燒錄,直到完成。
3.2命令行演示
3.2.1示例獲取
docker-ubuntu18:~$ mkdir test
docker-ubuntu18:~$ cd test
docker-ubuntu18:~$ yoc init
docker-ubuntu18:~$ yoc install sdk_app_d1 -b v7.5.1
Start to install components...
sdk_app_d1 (v7.5.1), clone https://gitee.com/yocop/sdk_app_d1.git ...
…… (省略) ……
d1_evb (v7.5.1), clone https://gitee.com/yocop/d1_evb.git ...
chip_d1 (v7.5.1), clone https://gitee.com/yocop/chip_d1.git ...
Download components finish.
docker-ubuntu18:~/test$ ls
boards components solutions
3.2.2編譯
docker-ubuntu18:~/test/solutions$ cd d1_button_demo
docker-ubuntu18:~/test/solutions/d1_button_demo$ make
…… (省略) ……
LINK out/d1_button_demo/yoc.elf
riscv64-unknown-elf-objdump -d out/d1_button_demo/yoc.elf > yoc.asm
INSTALL yoc.elf
Generating yoc.bin
scons: done building targets.
YoC SDK Done
[ ] Create bin files
[ ] Start to sign images with key:def_otp
[ ] Sign [prim] with [def_otp]
[rsa verify ok.... ]
[ ] Sign prim ok.
----------------------------------------------------------------
boot0, 0, 0, 0x00000000, 0x0000c000, 0x0000c000, boot0
gpt, 0, 0, 0x0000c000, 0x00004000, 0x00010000, gpt
boot, 0, 0, 0x00010000, 0x00025000, 0x00035000, boot
imtb, 0, 0, 0x00035000, 0x00002000, 0x00037000, imtb
prim, 1, 0, 0x00037000, 0x00360000, 0x00397000, prim
lfs, 0, 0, 0x00397000, 0x00452000, 0x007e9000
misc, 0, 0, 0x007e9000, 0x00013000, 0x007fc000
kv, 0, 0, 0x007fc000, 0x00004000, 0x00800000
boot0, 49152 bytes
gpt, 8192 bytes
boot, 143896 bytes
prim, 131228 bytes
imtb, 8192 bytes
----------------------------------------------------------------
Create yoc_rtos_8M.img in out directory Success!
3.2.3下載
可以通過(guò)3.1.3的下載方式進(jìn)行燒錄,也可以通過(guò)命令行進(jìn)行燒錄。
命令行燒錄之前要先連接好T-HeadDebugServer。然后在終端輸入make flashall命令:
~/.../solutions/d1_button_demo > make flashall :
1700] I am RISC-V
Program partition: boot0 address: 0x0, size 49152 byte
erasing...
program 00x0000c000, 100%
Program partition: gpt address: 0xc000, size 8192 byte
erasing...
program 00x0000e000, 100%
Program partition: boot address: 0x10000, size 142980 byte
erasing...
program 0x00032000, 100%
Program partition: imtb address: 0x35000, size 8192 byte
erasing...
program 00x00037000, 100%
Program partition: prim address: 0x37000, size 131072 byte
erasing...
program 00x00057000, 100%
~/.../solutions/d1_button_demo > :
04
運(yùn)行
重新上電或按下RST鍵,系統(tǒng)啟動(dòng),串口會(huì)有以下打印信息,表示系統(tǒng)運(yùn)行成功。
##YoC###[Feb 7 2022,1148]
cpu clock is 1008000000Hz
test Run lradc
當(dāng)按下對(duì)應(yīng)的按鍵之后會(huì)有相應(yīng)的打印信息輸出:
user key is pressed one times
05
下期預(yù)告
本文介紹了D1 Dock Pro開(kāi)發(fā)板的按鍵使用示例,開(kāi)發(fā)者可以通過(guò)示例代碼了解按鍵的簡(jiǎn)單觸發(fā)機(jī)制。下期內(nèi)容,我們將為大家講解D1 Dock Pro的LED閃爍例程。歡迎大家繼續(xù)關(guān)注。
-
按鍵
+關(guān)注
關(guān)注
4文章
223瀏覽量
57601 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5050瀏覽量
97456 -
Button
+關(guān)注
關(guān)注
0文章
16瀏覽量
7570
原文標(biāo)題:RISC-V大賽開(kāi)發(fā)套件詳解(十):D1 Dock Pro開(kāi)發(fā)板Button按鍵示例演示
文章出處:【微信號(hào):芯片開(kāi)放社區(qū),微信公眾號(hào):芯片開(kāi)放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論