<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

         一:前言

          以前申請到了荔枝派zero,在發了兩個開箱貼后就放在一邊吃灰了。后來又購買了荔枝派nano,刷了幾個教程中的系統之后又放到一邊吃灰了。雖然有屯板子的習慣,卻沒有使用板子的能力。

          后來,經過斷斷續續的摸索和群里面的新手教程,終于搭建好了Licheepi Nano的交叉編譯環境,自己GCC了一個hellowworld傳輸到了開發板并運行了起來。可是......對,于是又繼續吃灰。

          再后來,在大神 @暈哥 的 填坑網 (https://debugdump.com/index.html)看到了 另一個大神@達克羅德 的幾篇帖子 ,竟是生生的寫出了Licheepi nano的裸機代碼!此代碼包含了GPIO、timer、定時器、I2C、SPI等基本操作,最關鍵的是,它直接支持了對屏幕的操作,并剝離出了顯示驅動,非常方便使用。 于是懷著敬畏的心情,將大神放出的源代碼下載了下來,并經過一番摸索實現了裸機的操作和程序的下載。在此基礎上,移植了ZLG_GUI和3D旋轉立方體的演示程序,由于我以前移植過很多遍,所以很方便就移植好了。大神的源地址:F1C100S裸奔framebuffer+PWM+GPIO驅動

          為了總結使用過程和方便比我還小點的小白們,特寫了此篇文章,從編譯環境的搭建到程序的修改和下載運行等的全教程。

          然后,還是要感謝填坑網,感謝達克羅德大神,也感謝荔枝派的創造者@澤畔無材 和其他創造者和貢獻者,他們的工作和貢獻讓世界變得更加美好(好大的概括)。本教程中的代碼除個人創造部分,全部來源于網絡,移植于網絡,最終,也將免費貢獻于網絡(如果有侵權行為,請告訴我,我會盡快刪除)。但是,辛苦不能白費。所以,如果你有幸看到了本文,并且使用了本文內容或轉載了本文,請注明出處和保留作者,然后你就可以大方的使用了。謝謝。

      好了,正文開始。

      二:簡介

      Licheepi Nano 是荔枝派推出的一款超高性價比的跨界開發板,支持linux、RTT、裸機等開發環境。

      淘寶網:Licheepi Nano 

      荔枝派社區:http://bbs.lichee.pro/

      其他資料在 荔枝派社區 中基本都能找到地址。

      當然,你也可以在填坑網看大神的填坑歷程:https://debugdump.com/t_1623.html

       

      注意:當ubuntu中打開win傳過去的文件中存在亂碼時,請在win環境下用記事本打開 .c 或.h文件,點擊文件->另存為,將下方的 編碼 選擇為UTF-8 的格式,點擊保存并選擇是進行覆蓋保存,再傳入ubuntu就不會亂碼了。

      三:開始

      最基本的要求是:一個帶LCD屏的荔枝派,一根USB數據線,一臺電腦。選配:TTL串口轉接線。

      本文使用VMware+ubuntu16.04的環境。

      另外,本帖已經與百度達成深度合作,任何本文未提到但你又不懂的都可以去請教他,絕對知無不言。

      1:下載代碼和編譯器

          在F1C100S裸奔framebuffer+PWM+GPIO驅動 帖中下載 minimal_f1c100s_framebuffer.zip 和后來更新的一個.c文件。當然,這個帖子中還有其他方面的改動,可以詳細看看。

          然后,同樣是此帖子,下載大神提供的編譯器:http://pan.baidu.com/s/1dDtssIt  ,或是后面有坑友提供的連接:

      https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-eabi/

      https://releases.linaro.org/components/toolchain/binaries/5.3-2016.05/arm-eabi/gcc-linaro-5.3.1-2016.05-x86_64_arm-eabi.tar.xz

      選擇與電腦相匹配的下載。我的是64位的,就下載了后面那個鏈接的。

      至于周立功的GUIZLG_GUI和3D顯示相關的代碼,可以在我的另一篇博客園的文章中找到并下載下來,我很早以前就移植并發在網上了(懷念當年在學校中啃3D顯示代碼的時光......),或是下載最后的完整代碼。

      將兩個壓縮包和編譯器通過 VMware的 共享文件夾 都放入到ubuntu環境下,或是直接在ubuntu環境中下載。

      2:環境搭建

          在荔枝派的開源交流群(826307240)中有一篇《基于荔枝派Nano的Linux新手學習筆記》,將它打開,一步一步的操作。當然,如果只是想實現本帖內容的話,只需要按上面實現:虛擬機的搭建、sunxi-tool的安裝 這兩個教程就可以了。而且它里面的交叉編譯鏈在編譯自己的.c文件時不管用,生成的文件下載到開發板不能運行,需要重新安裝:

      sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi   

      然后使用arm-linux-gnueabi-gcc xx.c -o xx  進行編譯,將剛編譯完的文件復制到共享文件夾,串口軟件(如SecureCRT或新手文檔中提到的軟件)連接后輸入 lrz 命令進行文件傳輸。在開發板的串口中輸入chmod 777 xx(剛傳進來的可執行文件) 來進行賦權限,然后就可 ./xx 執行了。當然,這個需要TF卡刷群文件中 Nano_pub_V2/image 文件夾下的 .dd鏡像。至于TF的燒寫方法在荔枝派社區有。好了,這些都是題外話。以后再寫一個linux的教程,會詳細提到這些。

            sunxi-tool 工具的安裝 摘錄如下:

      “五、下載工具 sunxi-tools 安裝

      1)用git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git命令下載,用cd sunxi-tools命令切換到sunxi-tools文件目錄

      2)sudo apt-get install libusb-1.0-0-dev命令安裝libusb,sudo su命令切換root 用戶,用apt-get install zlib1g-dev命令安裝zlib1g

      3)用make && sudo make install命令適配 Nano 的下載工具,通過命令 sudo sunxi-fel ver 來確認有無成功進入fel模式

      4)報ERROR: Allwinner USB FEL device not found!,重新燒錄或重進fel模式,先拉低SPI flash的CS引腳1,再將MicoUSB與電腦連接,在Windows下運行 zadig-2.3.exe,點擊 Options -> List All Devices,選擇 WinUSB (v6.1.7600.16385),點擊 【Install WCID Driver】安裝驅動(教程https://debugdump.com/t_993.html

      5)右擊我的電腦選擇管理->服務和應用程序->服務,在彈出的對話框找到VMware USB Arbitration Service 右擊選擇啟動設置為自動啟動,在虛擬機中的可移動設備中選擇連接該板(教程https://blog.csdn.net/u013064187/article/details/41894021)

      6)用sudo sunxi-fel ver命令測試成功進入fel模式,斷開SPI flash的CS引腳1與GND的連接,用cd u-boot命令切換到u-boot文件目錄,用sudo su命令切換root 用戶,用sunxi-fel -p spiflash-write 0 ./u-boot-sunxi-with-spl.bin命令下載程序

      7)斷電連接LCD和串口E0、E1,上電查看LCD顯示,打開Xshell 5軟件選擇連接->SERIAL,設置波特率115200,連接后發送bdinfo,查看接收信息

       ”

      3:編譯測試

         將三個文件夾分別解壓到合適的目錄下。我的放在Download文件夾下。然后將fb-fc100s.c復制替換到minimal_f1c100s_framebuffer\minimal_f1c100s\driver 文件夾下。至于為什么,你仔細看一遍帖子就知道了。

          將解壓的編譯器 gcc-linaro-5.3.1-2016.05-x86_64_arm-eabi  放到/opt文件夾下(不放也可以,但后邊的路徑自己要改一下)。然后你有兩種選擇,一是參考《基于荔枝派Nano的Linux新手學習筆記》中安裝交叉編譯鏈 的步驟,將其中的編譯鏈替換成自己剛剛解壓的這個,其他照做。或是使用臨時的方法,每次使用前都要執行一次的(我用的就是這個方法):

          終端中輸入 sudo su ,然后輸入密碼進入root模式,然后輸入 export PATH=$PATH:/opt/gcc-linaro-5.3.1-2016.05-x86_64_arm-eabi/bin  (注意替換為自己下載的編譯鏈的名字和放置的實際地址),既將編譯鏈臨時加入到路徑中。關閉終端后再開啟需要重新輸入。

      終端中cd 到minimal_f1c100s_framebuffer\minimal_f1c100s 文件夾下,然后輸入 make ,回車開始編譯。當提示什么錯誤時,你需要再看看交叉編譯環境的搭建部分。

      無誤后,會提示 bootloader size =1800等,   并且當前文件夾目錄下多出一個build文件夾。cd build 到build文件夾下,按照新手學習筆記中的方式進行程序下載:

      先將flash的1腳拉低,然后插入usb供電,進入fel下載模式,以后每次下載程序都要這樣。此時VMware的 虛擬機->可移動設備 中會多出 onda WINusb Generic Device 的選項,點擊連接。然后斷開flash的拉低。

      輸入  sunxi-fel -p spiflash-write 0 ./firmware.bin 進行下載。成功后斷電重新供電,可以看到屏幕亮了。說明測試成功。

      4:移植ZLG_GUI

      ZLG_GUI是周立功公司提供的一套適用于單片機液晶屏的點陣式GUI,功能豐富,硬件要求低,移植及其簡單。

      將ZLG_GUI文件夾復制到minimal_f1c100s 文件夾下。

      首先,要進行規范性修改。將下面所有的.h文件和.c文件的.H .C統一改寫成小寫的。另外,在.c文件中將包含的 #include<xxx.h>中統一改寫成和文件名大小寫一致的內容,否則編譯報錯。

      對于這個GUI,只要實現 lcmdrv.c中的幾個基本的初始化、畫點、清屏三個函數就夠了。可以直接在此處修改,也可以新建一個Mycommon.c和Mycommon.h來實現。代碼如下:

       1 #include <stdint.h>
       2 #include <stdio.h>
       3 #include <string.h>
       4 #include <malloc.h>
       5 #include <dma.h>
       6 #include <framebuffer.h>
       7 
       8 #include <types.h>
       9 #include <common.h>
      10 
      11 
      12 framebuffer_t fb_f1c100s;
      13 render_t* render;
      14 
      15 /*初始化屏幕*/
      16 void Screen_Init(void){
      17     fb_f1c100s_init(&fb_f1c100s);
      18     render = fb_f1c100s_create(&fb_f1c100s);
      19 }
      20 /*畫點函數*/
      21 void Set_Point(int x,int y,uint32_t color){
      22     ((uint32_t*)render->pixels)[x+y*800] = color;
      23 }
      24 void Fill_Screen(uint32_t color){  //屏幕填充函數
      25      for (int i = 0; i < render->pixlen/4;i++)
      26         {
      27             ((uint32_t*)render->pixels)[i] =color;
      28         }
      29 }
      30 /*點色獲取*/
      31 uint32_t Get_Point(int x ,int y){
      32     return ((uint32_t*)render->pixels)[x+y*800];
      33 }
      34 /*將緩沖buf刷到屏幕上顯示*/
      35 void Show_Screen(void){
      36     fb_f1c100s_present(&fb_f1c100s, render);
      37 }
      38 void Screen_Setbl(void){//背光
      39      fb_f1c100s_setbl(&fb_f1c100s, 100);
      40 }

      都是原來main.c中的函數。

      -----------------------------------------2019-10-26 補充-------------------------------------------------

      上面的 800是指屏幕的寬度為800(用的屏幕的分辨率為800x480的),若是該屏幕分辨率可以更改此值。也可以自行提取為宏定義(在挖坑網中看到有人這么建議的)。

      ----------------------------------------------------------------------------------------------------------------

      在lcmdrv.c中包含進Mycommon.h,并將上面的代碼分別移植到lcmdrv.c下對應的函數下。

      main.c中加入 #include <config.h>,這個是調用ZLG_GUI唯一需要包含的頭文件。

      main函數中注釋掉不必要的函數,在while 前加入新移植的初始化函數,加入屏幕填充函數,劃線函數,顯示函數:

      GUI_Initialize();

      GUI_FillSCR(0x00FFFFFFU);

      GUI_Line(0,0,800,480,0xF000FF00);

      GUI_Exec();
      Screen_Setbl();

      r然后編輯Makefile文件:在SRC_C部分加入 

      SRC_C +=\

      ZLG_GUI/ConvertColor.c \
      ZLG_GUI/font5_7.c \
      ZLG_GUI/FONT8_8.c \
      ZLG_GUI/FONT24_32.c \
      ZLG_GUI/GUI_BASIC.c \
      ZLG_GUI/GUI_StockC.c \
      ZLG_GUI/lcmdrv.c \
      ZLG_GUI/loadbit.c \
      ZLG_GUI/menu.c \
      #ZLG_GUI/spline.c \  #此處有 math.h 中函數找不到的報錯,先注釋掉,后面進行解決
      ZLG_GUI/windows.c \

      INCDIRS下面加入:  INCDIRS += -I3Ddisplay   -Ilib    

      保存。然后終端輸入 cd .. 回到minimal_f1c100s文件夾,make 開始編譯。若還有錯誤,請按照提示進行解決。無誤后,cd build ,并再次拉低flash進行下載。重新上電后可以看到一條斜線,說明移植ZLG_GUI 成功。

      5:移植3D立方體程序

          我以前花時間整理好了,移植起來也很快,實現了畫點函數基本上就能直接用了。所以包含進 config.h就可以了。同時要修改Makefile,將.c文件和.和文件夾都寫進去。但是編譯后會發現,cos等函數找不到。所以在 Makefile 文件中的 -lgcc 后面加上 -lm來鏈接靜態庫。可是此時又蹦出來很多的錯誤。一番搜索下,意思是裸機沒有除法造成的(當然,本來來的函數中就有個除法,既然能用,說明是別的問題)。自從與百度達成深度合作后,事情方便了很多,于是一番搜索加實驗。反正各種處理后的結果是,沒處理好。好吧,此路不通。只好換個方法。

          自己建一個Mymath.c,從網上找到純c編寫的三角函數等的實現方法,復制,去掉空白字符(可能會有此類的報錯,只要一個一個刪除掉上面的空白處就好了),將需要math庫的地方加進頭文件。編譯。成功!以后再慢慢的修改實現標準math庫的移植。

        好了,main函數中加入3D顯示程序,立方體就旋轉起來了。(額......由于gif圖片的壓縮,看起來變得好難看......其實實際顯示還是很不錯的。)

       

       四:最后

          大神的裸機開發包還包含了其他操作,而且貌似大神都移植好了NES,不過沒放出源碼,以后我得自己移植。可悲的是,人家都能寫出來,咱都不會用......此處只做拋轉,希望板子不要再吃灰了。

          我想畫一個一荔枝派Nano為基礎的掌機,或是一個拓展中心,左右能插掌機鍵盤,下面能插全鍵盤或數字鍵盤,就是一個拓展中心的那種。然后開發能夠以linux、RTT、裸機等開發,或是本身為帶python的linux或是拓展屏幕的Micropython,能夠插上全鍵盤后直接脫機寫程序的(類似C.H.I.P)。外殼都是3D打印。這么一想,人生苦短,要學的東西還真多啊!

      好了,全部代碼如下:https://files.cnblogs.com/files/zhinianzhizhan/minimal_f1c100s_framebuffer.rar

       ---------------------------------------------------------------------------------------分割線-----------------------------------------------------------------------------------------------------------

      后來大神@暈哥 下載體驗了本demo,說有整數類型定義錯誤,不過我前面編譯時沒發現。所以若是有同學也出現這個問題并且不會解決的話,可以下載他編譯過的試試:https://files.cnblogs.com/files/zhinianzhizhan/minimal_f1c100s_fb_zlggui.rar   。在此感謝 @暈哥 的修改。

          我會再補一些3D方面的顯示,并且盡量使用之前實現了的函數。如果有感興趣的,可以私信我,我們一起探討。

      --------------------------------------2019-10-26補充-----------------------------------------------------------------------

      我后來用Python實現了 文字旋轉時鐘 ,其實就是套用的這個C語言版本的旋轉立方體的代碼。等我有空了(額.....沒準......)再移植為C語言的再跑一跑。

         作者:執念執戰 

         QQ:572314251

         微信:聊技術還是用QQ吧

      ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      -----------------------------------2020-4-30補充--------------------------------------------------------------------------------------------------------

      好幾個人問我要過文中那個文檔了。這個是群里面不知誰寫的,當年的群貌似已經解散了。。。。。反正群里沒那個東西了。

      這個不是我寫得到,我也找不到是誰寫的了。若有原作者可以聯系我我備注上。

      源文檔

      ---------------------------------------------------------------------------------------------------------------------------------------------------------------

       

       本文水平有限,內容很多詞語由于知識水平問題不嚴謹或很離譜,但主要作為記錄作用,能理解就好了,希望以后的自己和路過的大神對必要的錯誤提出批評與指點,對可笑的錯誤不要嘲笑,指出來我會改正的。                                                                                                    -------------隨夢,隨心,隨愿,執念執戰,執戰蒼天!

       

      posted on 2018-12-02 12:53  執念執戰  閱讀(10090)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 91高清免费国产自产拍| 免费看成人欧美片爱潮app| 尹人香蕉久久99天天拍| 亚洲区一区二区激情文学| 国产AV一区二区三区| 日韩精品国内国产一区二| 性欧美三级在线观看| av天堂久久精品影音先锋| 欧美性猛交xxxx乱大交丰满 | 骚虎视频在线观看| 人妻少妇一区二区三区| 4399理论片午午伦夜理片| 东京热大乱系列无码| 国产免费又黄又爽又色毛| 国产95在线 | 欧美| 最近最好的2019中文| 亚洲精品成人福利网站| 国产成人亚洲综合91精品| 日韩中文字幕v亚洲中文字幕| 婷婷四虎东京热无码群交双飞视频| 9l精品人妻中文字幕色| 国产人成777在线视频直播| 常州市| 无码国产玉足脚交极品播放| 亚洲精品一区二区美女| 欧洲熟妇色xxxx欧美老妇免费| 国产精品综合色区av| 国内精品卡一卡二卡三| 部精品久久久久久久久| 99久久精品国产一区二区蜜芽| 玩弄放荡人妻少妇系列| 久久久久99精品成人片牛牛影视| 被黑人巨大一区二区三区| 秋霞电影网| 久热色视频精品在线观看| 久久国语对白| 久久国产精品亚洲精品99| 亚洲大尺度无码无码专线| 亚洲av日韩av一区久久| 久久人人妻人人做人人爽| 久久精品国产亚洲成人av|