Arm Server
Macro
本節在 MinGW32 GCC-6.3.0-1 環境下編譯
函数宏需要在參數跟代換區塊的最外圍加上小括號避免代換結果有非預期的運算子結合
Virtual Machine
qemu-user
qemu-system
virt-manager
libvirt 的 GUI
libvirt
kvm-ok
用於檢察 CPU 是否支援虛擬化
libvirt: Domain XML format
virtiofsd
qemu 再做 filesystem share 時沒裝 virtiofsd 啟動虛擬機時會報失敗 virt-manager 中 Add Hardware 選 filesystem Source Path 選在 host 要往 guest share 的路徑 Target Path 是 virtiofs 在 guest 中要打的 Tag,不建議有斜線
Version Management
AT32F425 pwc_voltage_regulate_set
在將 AT32F425 BSP 從 V2.0.0 更新到 V2.1.2 發現 pwc_voltage_regulate_set() 行為有差異
AT32F425 BSP 应用指南
查閱 AT32F425固件库BSP&Pack应用指南
5.14.10 函数 pwc_voltage_regulate_set
下表描述了函数 pwc_voltage_regulate_set 表 365. 函数 pwc_voltage_regulate_set 项目 描述 函数名 pwc_voltage_regulate_set 函数原型 void pwc_voltage_regulate_set(pwc_regulator_type pwc_regulator) 功能描述 深度睡眠模式下电压调节器状态选择 输入参数 pwc_regulator:电压调节器状态选择 该参数可以选取 pwc_regulator_type 内的任意一个枚举值. pwc_regulator pwc_regulator 用于选择电压调节器的状态,其可选参数罗列如下 PWC_REGULATOR_ON: 深度睡眠模式下电压调节器正常开启 PWC_REGULATOR_LOW_POWER: 深度睡眠模式下电压调节器处于低功耗模式 PWC_REGULATOR_EXTRA_LOW_POWER: 深度睡眠模式下电压调节器处于额外低功耗模式 示例
Low Cost Microcontroller
- Puya
- PADAUK Technology 台灣廠商
- Holtek 台灣廠商
- EFM32 Zero Gecko 32-bit 美國廠商
大部分低於 4 cent 的 MCU 只能單次燒入
Browse the Microcontroller pages of LCSC and you’ll see tons of low-cost MCUs from companies like Padauk, Nyquest, Holychip, SimOne, and Fremont Micro Devices — with prices as low as 4 cents - the cheapest flash microcontroller you an buy is actually an arm cortex m0
Ubuntu
Official CD Mirrors for Ubuntu
2024 在下載 ubuntu 24 LTS 發現官網的下載數度極慢,且頁面上找不到 CD Mirror List,特別記下 CD Mirrors 的網址
Apt Package Conflict
Ubuntu 24.04 遇到與開 Update Repo 時無法安裝 Python3-venv, 應為 Python3-venv 需求更新的 Python3 但如果只開Update Repo 會沒有
RaspberryPi
-
Pi3 的chip文件 BCM2837
-
Bare metal Raspberry Pi 3 tutorials raspi3-tutorial
-
Pi4 的chip文件 Bcm2711
Pin
-
Raspberry Pi GPIO pin define Raspberry Pi Pinout
-
pigg GUI for View and Config RaspberryPi GPIO
GPIO 引腳可設定為高電平 3.3V 或低電平 0V,Pi 4 用電源供應器實測可以感受到 1 mA 3.3V,最低 1.2 還會判 Hight
Optimizing Compiler
從零開始建構 C 語言最佳化編譯器
Jserv 在 Coscup 2024 的演講,基於 shecc 從零開始建構 C 語言最佳化編譯器
basic block
程式碼單一入口,單一出口的區域
-
可達性 (reachability) 除了起始節點外,若一個基本區塊在最佳化中沒有前任節點連接,則此基本區塊被稱為不可到達 (unreachable),我們可安全的移除該基本區塊來簡化 CFG,如 C 語言關鍵字 break, continue, return 後的程式碼及 if, for, while 中條 件恆為 0 的情況。
Mitigating Integer Overflow in C
現代編譯器 Integer Overflow 行為調查 Mitigating Integer Overflow in C Side
Overflow
整數超過其所能表示的最大值 在 C 中,沒有任何語言層級的功能能處理
Can’t calculate 3 * 128 (384) with 8 bit unsigned storage: 1 1000 0000 (9th bit has nowhere to go…) == 128 8 value bits (representation range of 0-255)
Windows PE
簡介
Windows Portable Executable (PE) and Common Object File Format (COFF) files 檔案格式
- PE32 表示 X86 32bit 機器
- PE32+ 表示 X86-64 64bit 機器
PE Format
官方完整格式說明
- 一定由 DOS Header 開始,開頭前兩個 byte 為 0x4D4A
- NT Headers
64 和 32 位元的 OptionalHeader 結構不一樣