STM32H750 如何宣告一塊外部記憶體? 而不發生 Ha
        STM32H750 內部記憶體不到 1MB,在記憶空間使用大的情況下,我們需要在晶片外部增加外部 SRAM 以滿足空間需求。如何宣告一個變數映射到這外部記憶體?對於編譯器版本 AC5 或 AC6 最安全的做法是底下這樣宣告:
               uint16_t   *myTest = (uint16_t *) 0xC0000000;
直接將變數的位址映射到外部記憶體位址上,然後計算好這個變數的 array 長度大小。
另一個宣告方式,如下,但僅適用於 AC5 版本,
uint8_t myTest[128] __attribute__((section(".exsram")));

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

ARM Compiler 6 且不勾選 MicroLIB,晶
問題:STM32晶片用 ARM compiler 6 版本編譯,不勾選 MicroLIB,如下圖設定。燒錄後,晶片不會自動運行?
1. 使用 C++ 編譯,不能再勾選 MicroLIB,因為組譯會出現錯誤。MicroLIB 不支援C++。
2. 改回 ARM Compiler 5,勾選 MicroLIB。
3. 使用 C++ 編譯,需要重新定義一些 stdio 的函數,參考 keil MDK AC5向AC6迁移后如何重定向printf_ac6 printf-CSDN博客
4. 使用 C++ 編譯的解決方式,新增 Compiler I/O,如下圖。如果有用到 File or TTY,就勾選起來。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

最近 DeepSeek 模型為何讓人驚艷,打破了 AI 訓練必須不斷累積算力的迷思。先說說大學時代的理工學院,曾經修過數位訊號處理(DSP),可以了解到數位訊號的數學運算通常以浮點數(floating point)形式進行運算,因此當時DSP晶片有浮點運算(floating point)與定點運算(fixed point)之分。然而,浮點運算的硬體成本較高,且浮點DSP晶片價格昂貴。面臨的問題是若要提升產品的市場競爭力,往往需要採用成本較低的定點運算。由於定點運算在數值範圍和精度上有所限制,因此必須對數學運算架構進行大幅調整,並對演算法加以優化。例如,在浮點DSP上,計算三角函數(如 sin 函數)通常具有較高效能,而在定點運算環境下,為了提高效率,可以使用三角函數的查表法(Look-up Table, LUT),即以記憶體空間換取運算時間,從而降低運算成本。此外,在某些資源受限的嵌入式系統中,演算法的設計和優化需要投入更多心力,以在有限的算力和記憶體條件下達到最佳效能。

訓練 AI 組成的要素:算力, 數據, 模型演算法。算力建立在硬體資源,模型算法則是數學計算和軟體工程。同理,DeepSeek 在有限的算力資源環境下,若要提高計算效能,往往需要透過優化模型架構、調整演算法的計算方式,以降低運算複雜度,進而節省算力,儘管這可能會以部分精準度為代價。此外,優化資料結構的儲存與排列方式也是一種有效的策略,能夠提升存取效率,減少計算負擔,從而進一步優化整體效能。最後,DeepSeek v3 在數理, 自然, 程式碼...領域方面表現的結果與 OpenAI 不相上下。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

Edge Impulse平台的影像辨識模型
        Edge Impulse 是一個提供 AI 模型訓練的雲端平台 https://edgeimpulse.com/,也提供幾個免費的模型讓新註冊者使用,適合初學者入門學習 AI 模型訓練(Train),乃至生成推理參數(Inference)。此外,該平台提供的模型適用於邊緣運算,訓練後的模型參數可以移植到資源有限的嵌入式系統上面進行 AI 的推理,犧牲部分模型的精準度來換取更多周邊設備的推理應用。在網站,Edge Impulse 列出一些合作的硬體設備廠商或可移植的模組,我們可以根據這方向找適合的模組來實現。 
        就 EI 平台上免費提供的模型而言,可以分為一維資料的語音模型訓練,和二維資料的影像模型訓練。本文僅就影像辨識模型來介紹,請參考吉伊卡哇的臉部辨識 https://youtu.be/F2ollSB4v2g。在平台上,物件偵測的模型 MobileNet,我們可以調整模型訓練的圈數以及學習率...等,以便達到較好的精準度。底下的圖顯示,在相同的設定圈數下,MobileNet 2.0.35 版本的整體分數比 2.0.1 好,更進一步採用 MobileNetV2 SSD 模組來訓練,也能達到接近的精準度。MobileNetV2 SSD 比 MobileNet 模型除了物件的分類之外,還能精準物件的定位,當然在訓練的過程會花費更多的時間。簡而言之,MobileNet 2.0.35 專注於影像分類,而 MobileNetV2 SSD 則將分類與定位結合,實現更全面的影像理解。
        除了上述的模型之外,EI 平台也提供 Yolo 模型,不過這模型訓練時間過長,無法提供免費使用,必須購買點數才行,如果訓練過程要用 GPU,這也是需要購買點數。言歸正傳,訓練後的模組,EI 平台可以依據應用的環境產生推理的參數,比如生成 C/C++ 的推理函數庫,Arduino IDE 環境的推理函數庫...等,前段提到的影片就是用 Arduino IDE 環境的 ESP32 CAM 模組來實現影像辨識的推理。下圖是生成 Arduino IDE 推理的函數庫結構,模型的參數放在 tflite-model 目錄底下。假設我們以 MobileNet 2.0.35 模型來訓練,每次調整圈數或學習率而訓練優化後所產生的函數庫,每次不同的點在這個目錄檔案內的參數值。即使是 MobileNetV2 SSD,最大的差別也是 tflite_learn_5_compiled.cpp 這個檔案。
        結論,本文介紹一個 AI 雲端平台,讓系統工程師能快速瀏覽過模型訓練生成推理以及移植推理參數到開發板的過程,希望對大家有所幫助。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

螢幕擷取畫面 2024-08-04 161154.png

資料取自洪瑞泰盈再表

整理港股中的保險H股:新華保險,中國平安,中國太保。

ROE大於10%,股淨比小於1,股息殖利率大於5%,在市場上屬於估值偏低的標的。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

[筆記] RTSP stream server on Win

➤ 準備套件

MediaMTX:到 github 網站下載 zip 包 https://github.com/bluenviron/mediamtx,參考 [1]
FFmpeg:到官網下載已經編譯好的 zip 包,參考[2]

➤ 啟動 RTSP 服務

        MediaMTX zip 包裡面有三個檔案,一個程式的執行檔(.exe),一個是程式的配置檔(.yml),另一個是許可檔案。配置檔就是一個文字檔,打開後可以看到 RTSP 的相關設定,還有其他串流 RTMP 的設定。在 Windows 環境下,開啟 CMD 視窗,然後執行 mediamtx.exe,顯示出下圖的結果。RTSP 串流的 TCP 端口為 8554,UDP 端口為 8000。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

工控板 STM32H750  ADC / DAC / 網路介
        在實務上,經常使用意法半導體的 MCU,本文介紹一塊高效能的工控板,如圖一所示,以 STM32H750 為基礎,其核心為 ARM Cortex-M7,最高運算時脈 480MHz。底下列出這塊工控板的周邊介面:

1) 12 路光耦合GPI

2) 8 路光耦合GPO (有帶+24V電源的接點)

4) 2 路DAC (12-bit, 0~10V)

5) 8 路ADC (16-bit, -10.24V~+10.24V, 外接ADS8688晶片)

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

工控板 STM32F407 / 24-bit ADC / 乙
        意法 STM32 系列晶片在工業或控制領域使用是非常廣泛的,這裡介紹一塊 F407 的控制板,板子將晶片的周邊電路已經拉出來,並接到歐式端子頭,如圖一所示。簡單介紹 STM32F407 核心是 ARM Cortex-M4F,晶片最高工作頻率168MHz,底下列出這塊控制板的周邊介面:
        1) 16 路光耦合隔離 GPI

        2) 16 路光耦合隔離 GPO (有帶+24V電源的接點)

        3) 4 路光耦合隔離 GPO (無電源的接點)

        4) 2 路 DAC (12-bit, 0-10V)

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

[模組] STM32 藍芽模組 -- BlueNRG-2 模

模組介紹

BlueNRG系統有兩款已認證的藍芽模組,一款型號為BLUENRG-M2SA(對應的開發板名稱:STEVAL-IDB008V1M),一款為BLUENRG-M2SP。模組的核心是STM32 Cortex-M0,它本身就是一顆MCU,再外接常見的通訊界面,如:UARTSPII2C…等。官方網站提供該模組的SDK程式碼,到官方網站下載BlueNRG-1_2 DK-3.2.3.0-Setup.exe,執行安裝後,如下圖所示。
Keil IDE開啟任一個NRG2的專案檔,要注意使用這兩款的模組前有三個變數要定義清楚再來編譯。BLUENRG-M2SA的定義如下:

HS_SPEED_XTAL=HS_SPEED_XTAL_32MHZ

LS_SOURCE=LS_SOURCE_EXTERNAL_32KHZ

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

股市的技術指標(RSI、KD、MACD)與物理力學的關係
        過去常常思考一個問題,股市的量價關係如何與物理力學產生連結呢?股市的技術指標如何與牛頓定律扯上關係呢?我在這裡不探討數學式子,單純從概念來思考。以下謹代表個人研究心得,不負責盈虧。首先,股市的成交量能代表推力或衰退力道,股價代表移動的距離大小,股本可視為一個物體的質量。在股海時間久了,普遍的認知就是股本越大越需要更大的成交量能來推動價格,小股本的公司只需一點推力就能產生推升的效果,這樣的邏輯可以套用到力學當中的牛頓第二定律 F = MA。
        股市中,常見的技術指標 RSIKD、MACD,根據定義 RSI 代表強弱指標,以價格的最高最低來計算 RSI 數值。我們試著把價格高低點想像成移動的距離遠近,移動距離越大是不是代表發力的力道越大?於是,RSI 指標從 50 開始往上增加時,表示開始發力,F 開始產生作用,產生加速度 A 的移動,如下圖所示。
        牛頓定律中,發力的過程即使停止發力了,物體還是會持續往前進,這是慣性也是動能。從下圖中觀察,RSI 回到 50 以上,力道變得很微弱了,但是還有上升的動能。講到這裡,發力指的是瞬間力道,平均力道就要觀察另一個指標 KD。倘若 KD 維持在高檔(俗稱高檔鈍化),代表平均力道維持不墜,有力道就有前進的速度,也就有動能。因此,觀察 KD 指標能維持多久的時間代表力道的持久度,只要 KD 維持中強水準,即使稍微偷懶沒有出力,事後再發力,前進的慣性還是存在的,如下圖所示。
        最後,來講講動能,雖然前進具備動能,但是也要觀察動能的強弱,到底這次動能跟上次相比是更強還是更弱呢?技術指標的 MACD 用來判斷動能的強弱,當高於零軸時,代表動能轉向往前進,低於零軸代表動能為後退(代表價格下跌)。下圖所示的 MACD 維持在零軸之上,顯示一股前進的動能,即使回到靠近零軸,仍然在前進,只要再次發力便可加速往前進。但是,圖中後段的 MACD 動能顯然不如前一波的動能,代表發出的力道已經不足以產生上次的前進規模了。
        上述是一個推力前進的例子,來看看一個拉力後退的例子。RSI 低於 50 表示拉力後退,數值越低代表拉力越大。KD 在低檔維持越久,後退的動能維持時間會很久,即嗄使 KD 數值突然變大也無法立刻改變後退的動能。然而後退的動能大小則要觀察指標 MACD,當 MACD 越來越靠近零軸時,代表物體的移動方向準備要轉向(也可能盤整不動)。從下圖觀察,第二波的 MACD 動能已經弱於前一波,即便發出緊縮拉力往後扯,緊縮動能也不像前一波來得大了。正所謂,一鼓作氣,再而衰,三而竭,從股市也能體驗到古文的智慧。

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()

設備用到的模組:串列資料傳輸轉換為網路通訊
        工廠生產設備遇到網路化的問題,偏偏產線設備不具有網路端口,這時候可以使用 RS-232 to Ethernet 模組來解決,下圖一所示。有些設備不具有網路,只要將下圖的模組 RS-232 配置設定好後(圖四),設備與模組間就算搞定了,接下來再設定網路模式。

圖一:RS-232 to Ethernet 轉換模組

漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()


        什麼叫「預訓練模型」?事先透過大量的數據集訓練網路模型,這樣所獲得的模型結果可稱為預訓練,不過生成的模型算是一種通用的模型。比如一個分類的模型,大量被標註的數據集輸入到網路模型經過訓練後,這樣的預訓練模型或許能做到分類工作,但不見得能做得特別精準。所以說它只是一種通用模型,如果想要讓它分類更精準,那就得用自己的數據集再做 fine tune。
        在百度的 PaddleHub 平台上 https://github.com/PaddlePaddle/PaddleHub 提供不少預訓練的模型庫,底下圖一列出了部分網路模型。百度本身擁有不少數據集,適合拿來預先訓練各類網路模型,像是人體關鍵點檢測用到 ResNet50 的模型,目標檢測用到 YOLOv3 模型做訓練,我們身為初學者可以直接拿這些模型庫來做測試,基本上都有不錯程度的效果。不過,如果要針對某特定領域做檢測,可能會覺得精準度還不足。
圖一:PaddleHub 提供的預訓練模型庫
        如何使用 PaddleHub?舉圖像分割為例,在 python 環境下,呼叫下面的粗體字函數。先載入模型名稱後,再調用分割的函數。

漢亞科技 Han-Ya 發表在 痞客邦 留言(1) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。