ghostkcleung 2018-8-30 10:56
下面段 code 係唔 work 嘅,
但我唔想嘥時間做 copy 動作,
有無可能?
uint16_t data[256];
for(int i=0; i<256;i++){
data[i]=0xAABB;
}
uint8_t* buf=(uint8_t*)data;
for ( int i = 0; i < 512; i++){
cout << hex << buf[i] ;
// 我想個 Output 係 aabbaabb...
}
Susan﹏汪汪 2018-8-30 11:05
[code]#include <iostream>
using namespace std;
int main(void) {
uint16_t data[256];
for(int i=0; i<256; i++) {
data[i]=0xAABB;
}
uint8_t* buf=(uint8_t*)data;
for (int i = 0; i < 512; i++) {
cout << hex << (int)buf[i];
}
return 0;
}
[/code]
Little endian 的platform uint16會反轉左
ghostkcleung 2018-8-30 11:08
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 11:05 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486469535&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
#include
using namespace std;
int main(void) {
uint16_t data[256];
for(int i=0; i [/quote]
明白,即係無得搞,
除非自己 copy 。
ghostkcleung 2018-8-30 11:11
唔可以用呢個 方法,
因為我要成個 uint8_t[] pass 俾 function。
Susan﹏汪汪 2018-8-30 11:15
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 11:11 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486469830&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
唔可以用呢個 方法,
因為我要成個 uint8_t[] pass 俾 function。 [/quote]
caller係電腦?電腦做copy速度好快
ghostkcleung 2018-8-30 11:34
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 11:15 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486470013&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
caller係電腦?電腦做copy速度好快 [/quote]
就係唔係電腦,
想直接泊落去,
不過如果唔得就唔勉強。
assembly.jc 2018-8-30 13:05
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 11:11 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=486469830&ptid=27679464][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
唔可以用呢個 方法,
因為我要成個 uint8_t[] pass 俾 function。 [/quote]
scope 問題?
global 或 static variable,其他 function 都 access 到,需要 copy 嗎?
ghostkcleung 2018-8-30 15:57
[quote]原帖由 [i]assembly.jc[/i] 於 2018-8-30 01:05 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486476244&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
scope 問題?
global 或 static variable,其他 function 都 access 到,需要 copy 嗎? [/quote]
呢個 8bit array 係餵俾 output stream 食。我個 16bit array 要拆做 2 粒 8 bit,嫌動作太多。
ghostkcleung 2018-8-30 16:04
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 03:57 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486484965&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
呢個 8bit array 係餵俾 output stream 食。我個 16bit array 要拆做 2 粒 8 bit,嫌動作太多。 [/quote]
我買咗塊 ili9486 觸屏返嚟,竟然無 driver,佢俾嗰個啲 code 散收收,好唔舒服,所以自己重寫。
佢係用純 SPI 操作,我試過如果用 8bit array 一舊舊掟出去會快過逐粒掟,大約快十幾 %,對於咁慢嘅畫面嚟講都幾重要。
ghostkcleung 2018-8-30 16:09
呢塊衰嘢。
[url=https://www.waveshare.com/4inch-TFT-Touch-Shield.htm]https://www.waveshare.com/4inch-TFT-Touch-Shield.htm[/url]
然後我將佢裡面啲 code 勾返出嚟,implement 落去呢個 library 度。
[url=https://github.com/adafruit/Adafruit-GFX-Library]https://github.com/adafruit/Adafruit-GFX-Library[/url]
呢個 library 裡面嘅 interface,寫得比較好。用咗佢做 implement。
[url=https://drive.google.com/folderview?id=1IO_2BiV1zjq7M3bATbfpIz5Fe0uQPDRC]https://drive.google.com/folderview?id=1IO_2BiV1zjq7M3bATbfpIz5Fe0uQPDRC[/url]
(原來我唔識用 github,以為好容易)
[[i] 本帖最後由 ghostkcleung 於 2018-8-30 04:16 PM 編輯 [/i]]
Susan﹏汪汪 2018-8-30 16:22
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 04:09 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486485517&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
呢塊衰嘢。
https://www.waveshare.com/4inch-TFT-Touch-Shield.htm
然後我將佢裡面啲 code 勾返出嚟,implement 落去呢個 library 度。
https://github.com/adafruit/Adafruit-GFX-Library
呢個 library 裡面嘅 interface,寫得比較好。用咗佢做 imp ... [/quote]
佢呢個字體
汪汪用自己的rasterizer都可以wor
ghostkcleung 2018-8-30 16:30
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 04:22 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=486486278&ptid=27679464][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
佢呢個字體
汪汪用自己的rasterizer都可以wor [/quote]
唔識,呢啲簡單 mon 仔,只要畫到啲簡單嘢,寫到字,就當贏,速度係首要考慮。(佢 fill 個全畫面 rect 差不多要 0.8 秒。
Susan﹏汪汪 2018-8-30 16:40
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 04:30 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486486717&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
唔識,呢啲簡單 mon 仔,只要畫到啲簡單嘢,寫到字,就當贏,速度係首要考慮。(佢 fill 個全畫面 rect 差不多要 0.8 秒。 [/quote]
0.8秒畫480x320
如果畫一粒字母例如24x24應該唔太慢
唔知能唔能夠直頭放D scalable的字體資料
initial state alloc一塊memory預先做render
不過可能處理floating point會好慢
ghostkcleung 2018-8-30 16:52
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 04:40 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486487180&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
0.8秒畫480x320
如果畫一粒字母例如24x24應該唔太慢
唔知能唔能夠直頭放D scalable的字體資料
initial state alloc一塊memory預先做render
不過可能處理floating point會好慢 ... [/quote]
我睇過佢有段寫 canvas,
可以再 canvas 裡面搞好晒先至嘔落個畫面。
佢 default 處理字嘅方式,係逐隻字母做,首先 fill 咗個 background,然後逐粒 pixel 畫落去。如果text size 大嘅話,
出一句字會好痛苦。呢樣嘢我諗緊做優化。
ghostkcleung 2018-8-30 16:56
你班 programmer 真係唔嘢少架喎,咁都睇得明做緊乜。
Susan﹏汪汪 2018-8-30 17:11
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 04:52 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486487877&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
我睇過佢有段寫 canvas,
可以再 canvas 裡面搞好晒先至嘔落個畫面。
佢 default 處理字嘅方式,係逐隻字母做,首先 fill 咗個 background,然後逐粒 pixel 畫落去。如果text size 大嘅話,
出一句字會好痛苦。呢樣嘢我諗緊做優化。 ... [/quote]
如果個時間夠stable
應該可以計到pixels fillrate
然後就可以預測不同形狀大小的時間
汪汪講的rasterize的方法係呢種
[url=https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac]https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac[/url]
字體的輪廓如果唔複雜
大概唔會有太多三角形、可能可以預先拆晒bezier curve做三角形出來放入去
就只需要就咁loop三角形就得
而且三角形坐標本身也可以做transformation
所以可以實時做scaling
不過係怕唔夠memory 做pre-rendering
ghostkcleung 2018-8-30 17:14
其實件事就係買咗呢塊爛鬼 mon 返嚟玩,點知無乜 driver 好用,呢一刻其實唔應該再嘥時間,直接掉落垃圾桶算。
淘寶加埋運費舊半水架喎,咪試吓寫吓囉,點知勞動到咁多專業人士…
ghostkcleung 2018-8-30 17:19
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 05:11 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486488840&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
如果個時間夠stable
應該可以計到pixels fillrate
然後就可以預測不同形狀大小的時間
汪汪講的rasterize的方法係呢種
[url]https://medium.com/@evanwallace/easy-scalable-text-rendering-on-the-gpu-c3f4d782c5ac[/url]
字體的輪廓如果唔複雜
大概唔會有太多三角形、可能可以預先拆晒bezier cu ... [/quote]
如果佢正常常出到隻字已經好勁,
夜啲返到去我影俾你睇佢出一句字係點樣慢慢 scan 出嚟。
Susan﹏汪汪 2018-8-30 17:30
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 05:19 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486489198&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
如果佢正常常出到隻字已經好勁,
夜啲返到去我影俾你睇佢出一句字係點樣慢慢 scan 出嚟。 [/quote]
汪汪係指program initial 未畫mon果時
預先render文字落一塊memory
然後真正畫mon果時就由memory copy pixel落frame buffer
只是簡單的用memory 換時間的手法
其實搞咁多野都係諗緊應該可以寫到任意font size的
ghostkcleung 2018-8-30 17:42
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 05:30 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486489831&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
汪汪係指program initial 未畫mon果時
預先render文字落一塊memory
然後真正畫mon果時就由memory copy pixel落frame buffer
只是簡單的用memory 換時間的手法
其實搞咁多野都係諗緊應該可以寫到任意font size的 ... [/quote]
我睇過你條 link,呢塊板應該唔夠力,
16mhz 無 fpu。
可能 raspberry pi 會做到,
不過如果玩 raspberry pi,
用 HDMI mon 啦。
Susan﹏汪汪 2018-8-30 17:46
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 05:42 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486490445&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
我睇過你條 link,呢塊板應該唔夠力,
16mhz 無 fpu。
可能 raspberry pi 會做到,
不過如果玩 raspberry pi,
用 HDMI mon 啦。 [/quote]
咁有D可惜
ghostkcleung 2018-8-30 17:47
我都係諗畫落 memory 嘅方向,
然後成個 String 畫落隻 mon,
就算快唔到,起碼縮短咗 transfer 時間,眼睇落去會順啲。
Susan﹏汪汪 2018-8-30 17:52
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 05:47 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486490693&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
我都係諗畫落 memory 嘅方向,
然後成個 String 畫落隻 mon,
就算快唔到,起碼縮短咗 transfer 時間,眼睇落去會順啲。 [/quote]
話說
可唔可以預先準備好一堆memory 儲住字母的pixels
然後就當成sprite咁用
直接逐個字母的pixels data transfer 出去
[[i] 本帖最後由 Susan﹏汪汪 於 2018-8-30 05:53 PM 編輯 [/i]]
ghostkcleung 2018-8-30 18:15
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 05:52 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486490987&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
話說
可唔可以預先準備好一堆memory 儲住字母的pixels
然後就當成sprite咁用
直接逐個字母的pixels data transfer 出去 [/quote]
理論上係可以嘅,
我當你一堆可顯示嘅 ASCII 有 128 粒,
之後有幾種唔同 size(好似係 7 種),textSize 越大,pixel 越多,用 hard code 去做都唔係咁好睇。
呢隻 mon 仔嘅繪圖方式只有一種,
首先係 setWindow(x, y, w, h) 俾個範圍佢,然後 fill 一個 w*h 咁多格嘅 pixel 落去,畫乜都係得呢個方法架喇。
所以逢親遇到逐點畫嘅嘢就係最大鑊。
Susan﹏汪汪 2018-8-30 18:27
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 06:15 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486492195&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
理論上係可以嘅,
我當你一堆可顯示嘅 ASCII 有 128 粒,
之後有幾種唔同 size(好似係 7 種),textSize 越大,pixel 越多,用 hard code 去做都唔係咁好睇。
呢隻 mon 仔嘅繪圖方式只有一種,
首先係 setWindow(x, y, w, h) 俾個範圍佢,然後 fill 一個 w*h 咁多格嘅 pixel 落去,畫乜都係得呢個方法架喇 ... [/quote]
正常都會有setWindow呢個function
大把GUI library都最終離不開呢個function
汪汪見佢D字體其實都只不過係hardcode
[url=https://github.com/adafruit/Adafruit-GFX-Library/tree/master/Fonts]https://github.com/adafruit/Adafruit-GFX-Library/tree/master/Fonts[/url]
所以你自己hardcode落去都一樣結果
ghostkcleung 2018-8-30 18:40
[quote]原帖由 [i]Susan﹏汪汪[/i] 於 2018-8-30 06:27 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486492705&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
正常都會有setWindow呢個function
大把GUI library都最終離不開呢個function
汪汪見佢D字體其實都只不過係hardcode
[url]https://github.com/adafruit/Adafruit-GFX-Library/tree/master/Fonts[/url]
所以你自己hardcode落去都一樣結果 ... [/quote]
嘩!你真係認真睇,佩服!
暫時睇都係擺落 memory,然後成塊貼係最快,不過咁做唔可以無 background,因為係成塊 rect 咁貼落去。
Susan﹏汪汪 2018-8-30 18:58
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 06:40 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486493365&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
嘩!你真係認真睇,佩服!
暫時睇都係擺落 memory,然後成塊貼係最快,不過咁做唔可以無 background,因為係成塊 rect 咁貼落去。 [/quote]
比起汪汪自己的graphic library
佢呢個只是小library
assembly.jc 2018-8-31 00:46
[quote]原帖由 [i]ghostkcleung[/i] 於 2018-8-30 03:57 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=486484965&ptid=27679464][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
呢個 8bit array 係餵俾 output stream 食。我個 16bit array 要拆做 2 粒 8 bit,嫌動作太多。 [/quote]
array 裡面的 data 不會變吧? 如果係,咁 cast 左個 pointer 之後餵俾 output stream 食就可以,不是嗎? 何解要 copy 呢?
ghostkcleung 2018-8-31 02:15
[quote]原帖由 [i]assembly.jc[/i] 於 2018-8-31 12:46 AM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=486512114&ptid=27679464][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
array 裡面的 data 不會變吧? 如果係,咁 cast 左個 pointer 之後餵俾 output stream 食就可以,不是嗎? 何解要 copy 呢? [/quote]
啱啱試咗,
好鬼怪,真係會變。
DSSCSS 2018-8-31 04:23
呢款LCD DRIVER有玩過,
用STM32F103, 行72MHZ, 無咁慢。
就好似呢條LINK用STM32F4 (只係ARM M4 ~160MHZ)+ILI9806 GEN PATTERN,
可以好快。
[url=https://www.youtube.com/watch?v=Bgy0boPQUq0]https://www.youtube.com/watch?v=Bgy0boPQUq0[/url]
1) FILL RECT可以AUTO INCREMENT
2) 字形就HARDCODE落去
3) 用FSMC方法黎ACCESS DATA (STM32 FSMC LCD)
-----
1) 睇過段CODE,最好用PARALLEL INTERFACE ACCESS,ADAFRUIT那個LIBRARY用SPI,
速度上已經慢了不小。
2) 唔會用ARDUINO,只會用C DIRECT ACCESS REGISTER。
例如:FSMC READ WRITE LCD REGISTER類似咁寫:
[url=http://www.stmcu.org/module/forum/thread-615347-1-1.html]http://www.stmcu.org/module/forum/thread-615347-1-1.html[/url]
3) 用番粒快D 既32-BIT ARM MCU。
例如: STM32F429 > STM32F103
STM32既SPI,會咁寫:
[url=https://github.com/robots/STM32/blob/master/GPSTracker/modem/spi.c]https://github.com/robots/STM32/blob/master/GPSTracker/modem/spi.c[/url]
[[i] 本帖最後由 DSSCSS 於 2018-8-31 05:34 AM 編輯 [/i]]