本文來源電子發燒友社區,作者:李先生, 帖子地址:https://bbs.elecfans.com/jishu_2286690_1_1.html
前言
編寫代碼
復制代碼
導入代碼到開發板
編譯
運行
查看效果
總結
開發板運行了桌面系統自帶編譯環境,所以不需要交叉編譯,開發起來比較方便。
前言
前提是已經了解應用程序的開發流程,見https://bbs.elecfans.com/jishu_2286643_1_1.html。
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- int main(int argc, char *argv[])
- {
- int fd = -1;
- int ret = -1;
- uint8_t *p_fb = 0;
- struct fb_fix_screeninfo finfo;
- struct fb_var_screeninfo vinfo;
- memset(&finfo,0,sizeof(finfo));
- memset(&vinfo,0,sizeof(vinfo));
- /* 打開設備 */
- fd = open(argv[1],O_RDWR);
- if(fd < 0)
- {
- fprintf(stderr,"open %s err, %sn",argv[1],strerror(errno));
- return -1;
- }
- /* 獲取設備信息 */
- ret = ioctl(fd, FBIOGET_FSCREENINFO, &finfo);
- if(ret < 0)
- {
- fprintf(stderr,"ioctl finfo err, %sn",strerror(errno));
- close(fd);
- return -1;
- }
- ret = ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);
- if(ret < 0)
- {
- fprintf(stderr,"ioctl vinfo err, %sn",strerror(errno));
- close(fd);
- return -1;
- }
- /* mmap 這里假設bits_per_pixel為32位, 所以p_fb定義為unsigned int *p_fb, 寫buffer也是按照unsigned int 寫, 實際應該根據bits_per_pixel大小進行讀寫 */
- unsigned long len = vinfo.xres_virtual* vinfo.yres_virtual * vinfo.bits_per_pixel / 8;
- p_fb = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
- if(p_fb == NULL)
- {
- fprintf(stderr,"mmap len %ld errn",len);
- close(fd);
- return -1;
- }
- fprintf(stderr,"x = %d y = %d bits = %d len = %ldn",vinfo.xres_virtual,vinfo.yres_virtual,vinfo.bits_per_pixel,len);
- volatile int times = 30;
- while(times--)
- {
- if(vinfo.bits_per_pixel == 16)
- {
- for(unsigned int i=0; i< len/2; )
- {
- *((uint16_t*)(p_fb + i)) = 0xF800;
- i+=2;
- }
- usleep(atoi(argv[2])*1000);
- for(unsigned int i=0; i< len/2;)
- {
- *((uint16_t*)(p_fb + i)) = 0x07E0;
- i+=2;
- }
- usleep(atoi(argv[2])*1000);
- for(unsigned int i=0; i< len/2;)
- {
- *((uint16_t*)(p_fb + i)) = 0x001F;
- i+=2;
- }
- usleep(atoi(argv[2])*1000);
- }
- else
- {
- for(unsigned int i=0; i< len/4; )
- {
- *((uint32_t*)(p_fb + i)) = 0xFF0000;
- i+=4;
- }
- usleep(atoi(argv[2])*1000);
- for(unsigned int i=0; i< len/4;)
- {
- *((uint32_t*)(p_fb + i)) = 0x00FF00;
- i+=4;
- }
- usleep(atoi(argv[2])*1000);
- for(unsigned int i=0; i< len/4;)
- {
- *((uint32_t*)(p_fb + i)) = 0x0000FF;
- i+=4;
- }
- usleep(atoi(argv[2])*1000);
- }
- }
- munmap(p_fb,len);
- close(fd);
- return 0;
- }
見https://bbs.elecfans.com/jishu_2286643_1_1.html,使用rz導入不再贅述。
gcc framebuffer.c -o framebuffer回車
關閉桌面系統,否則桌面系統在顯示,framebufer無法顯示。
輸入sudo init 3回車 提示輸入密碼時輸入starfive回車。
用鼠標鍵盤
輸入用戶名riscv
密碼starfive登錄
輸入
sudo ./framebuffer /dev/fb 1000
提示輸入密碼時輸入starfive回車。
開發板運行了桌面系統自帶編譯環境,所以不需要交叉編譯,開發起來比較方便。
sudo init 3切換到命令行模式
sudo init 5切換到桌面模式
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
RISC-V
+關注
關注
45文章
2292瀏覽量
46211 -
賽昉科技
+關注
關注
3文章
154瀏覽量
14305
發布評論請先 登錄
相關推薦
預售啟動!昉·星光 2 AI套件正式發布,基于RISC-V構建AI算力
10月24日,昉·星光2(VisionFive2)AI套件正式開啟預售。該套件由中國RISC-V軟硬件生態領導者賽昉科技攜手邊緣人工智能(A
Ubuntu現已適配RISC-V單板計算機Milk-V Mars
近期,Canonical宣布優化的Ubuntu24.04鏡像已可用于RISC-V單板計算機Milk-VMars。Milk-VMars由深圳市群芯閃耀科技有限公司(Milk-V)設計并推出,搭載
信用卡大小的 RISC-V 單板計算機介紹
信用卡大小的 RISC-V 單板計算機 —— Mars
Mars 由深圳市群芯閃耀科技有限公司(Milk-V)設計并推出,搭載賽昉科技
發表于 04-12 16:39
賽昉科技VisionFive 2生態進展雙周報(2.1-2.29)
Image for VisionFive 2)
社區開發者發布4篇【昉·星光 2高性能RISC-V單板計算機體驗】系列文章,內容包括:為Ubuntu安裝Docker及常用軟件;以容器
發表于 02-29 15:45
【昉·星光 2 高性能RISC-V單板計算機體驗】以容器的方式安裝 HomeAssistant
【昉·星光 2 高性能RISC-V單板計算機體驗】以容器的方式安裝 HomeAssistant
下載并啟動容器
HomeAssisatant 官方并沒有提供基于
發表于 02-21 18:07
【昉·星光 2 高性能RISC-V單板計算機體驗】為 Ubuntu 安裝 Docker 及常用軟件
【昉·星光 2 高性能RISC-V單板計算機體驗】為 Ubuntu 安裝 Docker 及常用軟件
目的
為了更好的利用星光2,決定使用容器
發表于 02-21 17:54
【昉·星光 2 高性能RISC-V單板計算機體驗】VisionFive2開箱+安裝Ubuntu
【昉·星光 2 高性能RISC-V單板計算機體驗】VisionFive2開箱+安裝Ubuntu
前言
很感謝賽
發表于 02-21 17:49
昉·星光2 RISC-V單板計算機體驗(三) - SSH連接
昉·星光2 RISC-V單板計算機體驗(三) - SSH連接 一、官方資料 RISC-V官網: [https://rvspace.org]
評論