原创 SGDMA與普通DMA

DMA(Direct memory access,內存直接存取),屬於 Vectored I/O 方式,也是下沉運算的一種實現。 區別 Scatter-gather DMA 與 Block DMA(即普通DMA) 方式不同, Block D

原创 golang將uint32與byte[]互轉

package main import ( "encoding/binary" "fmt" ) func main() { // 一個長度爲4的byte切片,表示一個負數 bytes := []byte{0xFF, 0xFF,

原创 Linux內核源碼-存儲驅動之 QSPI Flash

傳輸方式 DIO/QIO/DOUT/QPI QPI模式(Quad Peripheral Interface),所有階段都通過4線傳輸。與之相對的是SPI。 SPI模式: 純種SPI(MISO/MOSI兩個數據線) DOUT 全稱 Dua

原创 Linux內核之SPI協議

SPI(Serial Peripheral Interface,串行外設接口)是一種同步串行的行業標準,但是並沒有像I2C那樣有標準文檔,它還有主從、可片選的特性。 圖源自Serial Peripheral Interface-wikip

原创 Linux內核之I2C協議

I2C協議標準文檔 THE I2C-BUS SPECIFICATION VERSION 2.1 JANUARY 2000: https://www.csd.uoc.gr/~hy428/reading/i2c_spec.pdf I2C全稱In

原创 手寫協議報文 c語言手法

鑑於絕大部分文件、網絡通信協議、非網絡通信協議都有類似的結構{類型,長度,校驗,不定長數據,結束標誌},再高級點的會包含多個單層TLV,甚至嵌套TLV,狀態機流轉標誌等等。所以編程語言上也需要採用一定的手法。 建立結構 結構體和聯合體 例如

原创 goweb性能分析 - 遠程分析

gin集成pporf main.go添加 import _ "net/http/pprof" gin路由添加 // r is *gin.Engine pprof.Register(r) 本地電腦鏈接到遠程web服務進行分析 然後本地

原创 RT-Thread 4.x STM32F107

官方文檔很坑,新舊不分開,文檔缺失/分類很亂 有些文檔在IDE RT-STUDIO文檔裏,有些在RTThread標準版文檔裏,逆天 坑:不支持STM32CUBEMX的Advanced工程,記得重新保存生成basic工程才能用。不能使用.c/

原创 簡述:將帶透明通道的PNG/BMP圖片疊加到Framebuf上

PNG圖片,維基百科簡介:https://zh.wikipedia.org/wiki/PNG 現在帶透明通道的最常見的PNG文件都是PNG 32格式,所以首先將PNG文件解析爲RGBA-8-8-8-8即32位真彩像素(PNG 32)(A代表

原创 windows下用Code::blocks gcc/mingw系使用wxWidgets庫

關於Windows“wx/setup.h: No such file or directory”解決方法 很多Windows下用Code::blocks+wxWidgets的朋友最開始的時候都會因爲這個錯誤無法編譯而放棄wx。 下面給

原创 使用hexo搭建自己的github pages博客[皮膚:Shoka & multi-markdown-it]

環境 Windows11 Powershell/CMD Nodejs 新建倉庫 首先新建github倉庫(初始化什麼的都不要選,保持空倉庫) <你的用戶名>.github.io 如我的是 sky5454.github.io 然後點該倉庫的

原创 Slint-UI移植到任意平臺-概述-Rust

前言 Slint官方架構圖 本文僅爲筆者記憶,個人經驗寫着玩,目前1.3.2版本。 注:本文尚未完成。 注:本文尚未完成。 注:本文尚未完成。 本人目前想要移植一種貼近前端技術的GUI到裸機上,但是裸機不支持UNIX環境,所以絕大部分框架

原创 js/ts中Date類的ref響應式 -- VUE3

現象 Date對象無法響應式 原因 Date是個深層對象,外面那層可以響應(即淺層是Object),但是更改時間的值,是需要裏面的層修改的(深層),所以不會被偵測到改動 解決方案 強制觸發副作用即可 如果使用Element,那就只能觸發響

原创 vue3 reactive對象的watch

代碼 <script setup> import { ref,reactive, watch } from 'vue' const obj = reactive({ count: 0 }) const yourKnow0 = ref('

原创 debian_ubuntu配置sock/socks5h/http/https代理

編輯用戶變量 vi ~/.bashrc 添加以下代碼 # set proxy function proxy_set() { export MY_PROXY=socks5h://192.168.10.25:1080 #er