硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1900|回复: 26
收起左侧

[以太网] 用PC 把JPEG圖拆解成C檔直接透過網路傳給 STM32H743

  [复制链接]

18

主题

208

回帖

262

积分

高级会员

积分
262
发表于 2022-5-23 14:23:18 | 显示全部楼层 |阅读模式
HI ERIC大佬

剛想到一個應用:如果用PC把JPEG圖拆解成C檔直接透過網路傳給
STM32H743

STM32H743用RL-TCPNET或是NETX來收,收完後解碼顯示在七吋屏上.
應該是做得到吧.??

在這種前提下STM32H743有需要SDRAM或是外部的儲存器嗎??

如果先不要求速度的話,例如 100mS 解一張800X480的JPEG圖面.
是否可完全不需要外部的儲存媒介.單靠STM32H743內部RAM
一邊存一邊解就可以???

謝謝.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2022-5-23 16:31:25 | 显示全部楼层
这个比较好实现,直接TCP或者UDP收发即可
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-23 16:41:38 | 显示全部楼层
HI 大佬

那不要求速度的話,可以不需要外部儲存媒介嗎??
單單由743內部RAM即可解800 X480的JPG
謝謝.


謝謝.
回复

使用道具 举报

2

主题

75

回帖

81

积分

初级会员

积分
81
发表于 2022-5-23 19:40:48 | 显示全部楼层
inceboy 发表于 2022-5-23 16:41
HI 大佬

那不要求速度的話,可以不需要外部儲存媒介嗎??

貌似资源紧张,黑白还行,每个像素点1个字节就要占用400K内存了,彩色可能要选比较低阶的r8g8b8 24位肯定不够了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2022-5-24 01:37:41 | 显示全部楼层
inceboy 发表于 2022-5-23 16:41
HI 大佬

那不要求速度的話,可以不需要外部儲存媒介嗎??

完全没问题。绰绰有余。
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-24 09:35:49 | 显示全部楼层
eric2013 发表于 2022-5-24 01:37
完全没问题。绰绰有余。

HI 大佬

忘記寫是100mS完成顯示一張 800X480 的JPEG圖檔在七吋屏上.
不用像現在搭SDRAM顯示一張可以在10mS以下完成.

謝謝.
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-24 09:36:41 | 显示全部楼层
eggplant886 发表于 2022-5-23 19:40
貌似资源紧张,黑白还行,每个像素点1个字节就要占用400K内存了,彩色可能要选比较低阶的r8g8b8 24位肯定 ...

一個點要佔用400K內存???
大哥您確定??
回复

使用道具 举报

2

主题

25

回帖

31

积分

新手上路

积分
31
发表于 2022-5-24 10:51:32 | 显示全部楼层
inceboy 发表于 2022-5-24 09:36
一個點要佔用400K內存???
大哥您確定??

他应该说的是,每个像素点1个字节,(一帧)就要占用400K内存
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-24 13:55:28 | 显示全部楼层
Dazen35 发表于 2022-5-24 10:51
他应该说的是,每个像素点1个字节,(一帧)就要占用400K内存

HI Dazen35大大
哦哦 384000沒錯.就算一個點 2 BYTE --> 768000
只是H7也有864 Kbytes of user SRAM,,不會不夠用吧....
回复

使用道具 举报

2

主题

25

回帖

31

积分

新手上路

积分
31
发表于 2022-5-25 09:59:26 | 显示全部楼层
inceboy 发表于 2022-5-24 13:55
HI Dazen35大大
哦哦 384000沒錯.就算一個點 2 BYTE --> 768000
只是H7也有864 Kbytes of user SRAM,, ...

H743/H750虽然总体RAM有1MB,但他是分为好几段的,最大一块连续的才512KB,这个是不够756000B;所以最近有个H7B0,它的最大一块RAM大于1MB,刚好可以不加SDRAM驱动800*480分辨率RGB565格式的LCD,你可以了解下
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-25 10:35:37 | 显示全部楼层
Dazen35 发表于 2022-5-25 09:59
H743/H750虽然总体RAM有1MB,但他是分为好几段的,最大一块连续的才512KB,这个是不够756000B;所以最近 ...

HI Dazen35

不能再分柝嗎??
一定要800X480一次全部解碼完進內存才行??

謝謝.
回复

使用道具 举报

2

主题

25

回帖

31

积分

新手上路

积分
31
发表于 2022-5-25 10:50:40 | 显示全部楼层
inceboy 发表于 2022-5-25 10:35
HI Dazen35

不能再分柝嗎??

这个我就没深入研究过了,理论上我觉得不太行,因为显存实际就是内存,内存(显存)只要一变,RGB屏就会变化,用512KB内存一会当屏幕显存的一半,一会再当屏幕显存的另一半,即使刷新得再快,屏幕也会花的。总而言之,显存必须得刚好覆盖住整个屏幕才行
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-5-26 21:23:42 | 显示全部楼层
Dazen35 发表于 2022-5-25 10:50
这个我就没深入研究过了,理论上我觉得不太行,因为显存实际就是内存,内存(显存)只要一变,RGB屏就会 ...

嗯嗯, 了解,

這個再研究一下.

謝謝dazen大回覆.
回复

使用道具 举报

3

主题

48

回帖

57

积分

初级会员

积分
57
发表于 2022-5-27 09:23:50 | 显示全部楼层
eric2013 发表于 2022-5-24 01:37
完全没问题。绰绰有余。

我也想知道怎么绰绰有余法,先插眼
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-6-1 20:47:12 | 显示全部楼层
HI ERIC2013大大

那用 "ThreadX_NetXDUO_FileX_USBX_GUIX Template" 這個模板是不是比較單純一點
不管是要不要用SDRAM作內存顯存都很靈活??

謝謝.
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-6-2 15:51:39 | 显示全部楼层
HI ERIC2013大大

"[ThreadX全家桶] ThreadX GUIX加载JPEG图片,并将其绘制到内存设备方法"

這個篇的兩個函數還可以在現在的GUIX使用嗎??

謝謝
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-6-20 13:37:27 | 显示全部楼层

HI ERIC2013大佬

算成功解JPEG了,只是還是有BUG,在成功畫出十幾次後,
gx_image_reader_start() 會回報GX_記憶體錯誤(0X30)
有空的話可否幫看一下我這個作法的BUG是???? 謝謝

原始PROJECT --> "V7-2045_GUIX炫酷時鐘錶盤設計,結合硬件RTC"
把 "V7-2045_GUIX炫酷時鐘錶盤設計,結合硬件RTC\User\guix"的這兩個檔案替換掉即可.

guiapp_resources.c

4.79 MB, 下载次数: 0

MainTask.c

10.54 KB, 下载次数: 0

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-6-22 09:23:51 | 显示全部楼层
HI ERIC2013大佬

知道那裡錯了.下面這二行轉換只要做一次就好了.不用每次都做.....
gx_image_reader_create
gx_image_reader_start

ArmFly_V7_GUIX_JPEG.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2022-6-23 09:45:13 | 显示全部楼层
inceboy 发表于 2022-6-22 09:23
HI ERIC2013大佬

知道那裡錯了.下面這二行轉換只要做一次就好了.不用每次都做.....

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-6-28 14:00:56 | 显示全部楼层
HI 2013大佬

發現個問題,本來要用TCP的SOCKET 把JPEG C CODE丟到V7板上.
但這麼大的空間想說應該也只有SDRAM夠放了吧.

就先嘗試把CONST內JPEG C CODE-->_ac1[] 的JPEG C CODE先塞進SDRAM裡.
----------------------------
                pSRAM = (uint32_t *)SDRAM_JPEG_SOURCE;
                for (unsigned long X = 0; X < sizeof(_ac1); X++) {
                        *pSRAM = _ac1[X];
                        pSRAM++;
                }
-------------------------------------------
再讀出來看, 一字不差都OK .

但是再要餵給 gx_image_reader_start() 做轉換時出了點問題.

JJJ_Status = gx_image_reader_create(&reader, (GX_UBYTE *)SDRAM_JPEG_SOURCE, sizeof(_ac1), GX_COLOR_FORMAT_565RGB, 0);
(從原本的 CONST位址(GX_UBYTE *)_ac1換成---> SDRAM位址GX_UBYTE *)SDRAM_JPEG_SOURCE)
gx_image_reader_create()是回報成功的.

但是要做gx_image_reader_start時卻是回報給我,0X28(GX_NOT_SUPPORTED (0x28) 不支援輸入影像類型或輸出色彩格式??)
但從CONST就可以?? 所以倒底是格式真的錯了??還是不能從SDRAM做來源??................
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-1 14:28:44 | 显示全部楼层
HI 2013大佬

發現第二種做法,不過.......還是不接受SDRAM

可以不用gx_image_reader_create和gx_image_reader_start轉換
直接用gx_canvas_pixelmap_draw來轉完即畫就好.只是在GX_PIXELMAP的FLAG變數要:
從GX_PIXELMAP_COMPRESSED變成-->"GX_PIXELMAP_COMPRESSED|GX_PIXELMAP_RAW_FORMAT
這樣的話GX_PIXELMAP的DATA就可以直接餵JPEG的C CODE就好。
只是試起來很慢, 480X272的圖得要200MS才轉完.

但是TMD的這個做法還是只接受FLASH DATA.......
SDRAM位址會回0X10(GX_FAILURE)...............
回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-12 10:05:20 | 显示全部楼层

HI 2013大佬,行了.終於搞定

原來一直是方向錯誤,GUIX和EMWIN都有內存申請的函式給你用
啊我都沒用,在那邊自己搞,難怪會被判定有問題,和GUI打架了

其實就按照之前SD卡的做法就好.就回去看SD卡定時抓圖檔顯示
當初是怎麼弄的,

1: 申請內存,
                /* 申請一塊內存空間,並且將其清空 */
                hMem = GUI_ALLOC_AllocZero(800 * 600);
                /* 將申請到內存的句柄轉換成指針類型 */
                _acBuffer2 = GUI_ALLOC_h2p(hMem);

2: 把JPEG C CODE放進來
                for(....){
                          *_acBuffer2  = JPEG_C_CODE.......;_acBuffer2 ++;
                         }
3: 丟給轉換顯示,
                JPEG_Decode_DMA(&JPEG_Handle, (uint32_t)_acBuffer2,  _Context.NumBytesInBuffer, (uint32_t)_Context.pWorkBuffer);
4: 放開內存.
                GUI_ALLOC_Free(hMem);

好了,就出來了.

不過目前這個版本是借用V7-1007_RL-TCPnet V7.X實驗_TCP服務器(FreeRTOS)
和5.44版本那個大佬弄好硬解的 emWin 版本.嘗試兩個組起來.還好沒打架,只是
優先權的話RL-TCPnet還是要高於emWin.

都是要等遠端把JPEG_C_CODE傳完才去觸發emWin做顯示.

V7-1007_RL-TCPnet V7.X實驗_TCP服務器(FreeRTOS)_emWin.7z

11.33 MB, 下载次数: 5

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-12 10:30:22 | 显示全部楼层
HI 大佬
和這個C#視窗程式配套
000002.jpg

WFA_0711_1939.exe

129 KB, 下载次数: 10

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2022-7-12 11:37:38 | 显示全部楼层
inceboy 发表于 2022-7-12 10:05
HI 2013大佬,行了.終於搞定

原來一直是方向錯誤,GUIX和EMWIN都有內存申請的函式給你用

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-12 17:18:33 | 显示全部楼层
hi 大佬,忘記講

硬解果然威 !! 現在測800 x 480 圖顯示 用計時算 都可在28-30ms內完成 !!!

接下來就想做這個帖子的裡面那個視頻的效果了.
"[ThreadX全家桶] GUIX学习笔记3 - 一种视频片段播放方案"

VID20220614092002.mp4

4.4 MB, 下载次数: 12

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-14 09:45:19 | 显示全部楼层
HI 大佬,

視頻搞錯了,這個才對.

2097bcd78e0fefc744881bafdca6a664.mp4

2.27 MB, 下载次数: 11

回复

使用道具 举报

18

主题

208

回帖

262

积分

高级会员

积分
262
 楼主| 发表于 2022-7-28 21:21:53 | 显示全部楼层
HI 大佬,
成功,,,偽播放器,沒音效,哈哈.

MOV_0062.mp4

17.4 MB, 下载次数: 7

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-24 15:38 , Processed in 0.262466 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表