硬體







LCD 4Bit
LCD Timing(VBPD、VFBD、VSPW、HBPD、HFPD、HSPW)
USB
    ∗ HID EndPoint
    ∗ Keyboard scancode
    ∗ USB轉UART(8隻腳位的PL2303)




(FPGA) LCMXO2-400HC (小脚丫STEP-MXO2第二代)







接腳
電路圖
安裝Diamond(Windows)
VHDL
    ∗ LED
    ∗ Clock
    ∗ Button
    ∗ Parallel




(FPGA) 10M02SCM (小脚丫STEP-MAX10)







接腳
電路圖
安裝Quartus
解決USB-Blaster無法偵測到的問題(Linux)
解決USB-Blaster無法安裝驅動程式的問題(Windows x64)
VHDL
    ∗ LED
    ∗ Clock
    ∗ Button
    ∗ Parallel
型態轉換
Delta cycle




(FPGA) EG4S20 (Lichee Tang Premier)







接腳
電路圖
Patch Anlogic TD License
安裝Anlogic TD(Tang Dynasty)
編譯燒錄Hummingbird E203(蜂鳥E203)
解決"libusb couldn't open USB device ... Permission denied"問題
Verilog
    ∗ LED
    ∗ Clock
    ∗ Button
    ∗ Parallel




(FPGA) GW1N-LV1QN48C6/I5 (Lichee Tang Nano 4K)







接腳




(FPGA) EPM240T100C5N







開發板
安裝MAX II裝置
VHDL
    ∗ LED
    ∗ Clock
    ∗ Button




(FPGA) EP4CE6E22C8N











(FPGA) EPM240T100C5N











(MCU M68HC08) MC68HC908JB8







腳位
中斷表
bl08.c
Memory Map
Monitor Mode
開發板
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(MCU 8051) STC15W104







腳位
規格表
暫存器
指令集
開發板
Opcode
中斷向量
Timer表
EEPROM表
STC-ISP燒錄封包(Bus Hund)
逆向STC-ISP V6.85I(IDA Pro)
如何使用Windows STC-ISP燒録程式
I/O種類
    ∗ Input-only
    ∗ Push-pull Output
    ∗ Open-drain Output
    ∗ Quasi-bidirectional I/O
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ INT1
    ∗ Clock
    ∗ Button
    ∗ EEPROM
    ∗ Timer2
    ∗ Watchdog
    ∗ Software Reset
    ∗ Power-Down、Idle
    ∗ UART TX(57600bps)
    ∗ UART RX(57600bps)
    ∗ Timer0(Timer、Mode0)
    ∗ Timer0(Timer、Mode1)
    ∗ Timer0(Timer、Mode2)
    ∗ Timer0(Timer、Mode3)
    ⊕ W25Q64
        ∗ Read JEDEC ID
        ∗ Erase、Write、Read




(MCU 8051) STC15W204S







腳位
規格表
開發板
build stcgal
使用Windows STC-ISP燒録程式
逆向STC-ISP V6.85I(Bus Hound)
Assembly
    ∗ 開發環境
    ∗ Show PNG
    ∗ 0.96" OLED 128x64 SSD1306




(MCU 8051) STC15W4K56S4







C/C++
    ∗ 1.30" TFT 240x240 ST7789V
    ∗ 1.45" TFT 240x240 ST7789V
    ∗ 1.54" IPS 240x240 ST7789V
    ∗ 2.00" IPS 320x240 JBT6K71-AS
    ∗ 2.80" IPS 320x240 S6D04M0X21
    ∗ 3.50" IPS 320x480 ILI9488
    ∗ 0.91" OLED 128x32 SSD1306
    ∗ 0.96" OLED 128x64 SSD1306
    ∗ 1.50" OLED 128x128 SSD1351
    ∗ 1.54" ePaper 152x152 Black-Yellow
    ∗ 1.54" ePaper 200x200 Black-Red




(MCU 8051) CC2540







腳位
中斷表
開發板
build cc-tool
解決"configure: error: invalid value: boost_major_version="問題
解決"Error occured: libusb_control_transfer (out) failed, Pipe error"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button



(MCU 8051) CY7C68013







開發板
抹除eeprom
燒錄hex(ram)
燒錄hex(eeprom)
build fxload
build cycfx2prog
解決"sdcc xdata syntax error"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button



(MCU PIC) PIC10F200







規格表
指令集
記憶體
開發板
如何修改TRIS暫存器
如何修改OPTION暫存器
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ Watchdog
    ∗ 3根GPIO驅動6顆LED
    ∗ UART TX(9600bps)
    ∗ Wake-up on Pin Change




(MCU PIC) PIC12F1822







腳位
規格表
記憶體
開發板
指令集
PICKit3腳位
build sdcc 3.9.0
build gputils 1.5.0
解決"sdcc cannot generate code for target pic14"問題
解決"Warning[202] Argument out of range. Least significant bits used"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ EEPROM
    ∗ Watchdog
    ∗ Oscillator
    ∗ Flash Memory
    ∗ Interrupt On Change(IOC)
    ∗ 0.91" OLED 128x32 SSD1306
    ∗ 0.91" OLED 128x32 SSD1306(顯示字串)




(MCU AVR) ATtiny13







腳位
中斷表
開發板
如何透過avrdude更新fuse
如何透過avrdude更新eeprom
解決"avrdude: error: program enable: target doesn't answer"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Sleep
    ∗ Timer
    ∗ Button
    ∗ EEPROM
    ∗ Watchdog
    ∗ UART TX(9600bps)
    ∗ Compare Match Output
    ∗ Pin Change Interrupt
    ∗ Self-Programming Flash




(MCU AVR) ATtiny85







開發板
ATtiny85電路圖
C/C++
    ∗ 開發環境
    ∗ LED
    ∗ Button




(MCU AVR) ATmega32U4 (Arduino Micro)







腳位
電路圖
Arduino
    ∗ 開發環境
    ∗ LED




(MCU AVR) ATmega328 (Arduino Nano)







腳位
電路圖
如何在Arduino-IDE下載程式
Arduino
    ∗ 開發環境
    ∗ LED




(MCU AVR) ATmega328P (Arduino Uno)







腳位
電路圖
Arduino IDE添加Attiny85
Arduino IDE添加Atmega88
更新Arduino Micro Bootloader
更新KTduino Nano(CH340G) Bootloader
修復USB ISP(zhifengsoft)無法使用avrdude的問題
Arduino
    ∗ 開發環境
    ∗ LED




(MCU AVR) ATmega2560 (Arduino Mega)







腳位
電路圖
提高analogRead()讀取速率
Arduino
    ∗ 開發環境
    ∗ LED




(MCU STM8) STM8S001







腳位
中斷表
指令集
暫存器
記憶體
開發板
解決"stm8flash ... Tries exceeded"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(MCU STM8) STM8S103







腳位
開發板
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ UART
    ∗ Flash
    ∗ Button
    ∗ Timer1
    ∗ Timer2
    ∗ Timer4
    ∗ EEPROM
    ∗ Auto-wakeup(AWU)
    ∗ Window watchdog(WWDG)
    ∗ Independent watchdog(IWDG)
C/C++
    ∗ stm8.h




(MCU Tensilica) L106







Flash Image




(MCU Tensilica) Xtensa LX6







Flash Image




(MCU BC417) BC417143







腳位



ARM







GIC
Carry Flag
NEON Register
ldmia sp!, {pc}^
Conditional Execution
push、pop、stmfd、ldmfd
ldr pc, _irq、ldr pc, =_irq、adr pc, _irq
解決沒有"/dev/input/eventX"的問題
解決"crt1.o: No such file or directory"問題
解決"./autogen.sh: 4: autoreconf: not found"問題




(ARM 7) S3C44B0X







腳位
接腳
開發板
JTAG腳位
如何使用JLinkExe下載程式
如何使用J-Link GDB Server和IDA Pro除錯程式
解決SST39VF1601前32KB無法抹除的問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ Phase Locked Loop(PLL)




(ARM 7) LPC2103







腳位
開發板
記憶體
中斷表
如何進入ISP模式
build lpc21isp
return address
enable interrupt
如何使用lpc21isp燒錄
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ UART
    ∗ Button
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ Timer3
    ∗ EINT1(FIQ)
    ∗ EINT1(IRQ)
    ∗ EINT1(Vector IRQ)
    ∗ EINT1(Non-vectored IRQ)
    ∗ Power-down
    ∗ WatchDog Timer(WDT)
    ∗ Phase Locked Loop(PLL)




(ARM 7) AT91SAM7S64







腳位
中斷表
開發板
規格表
記憶體
如何使用SAM-BA燒錄
為何VDDOUT沒有輸出1.8V
Peripheral Identifiers
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Phase Locked Loop(PLL)




(ARM 9) NUC977







規格表
架構圖
中斷表
記憶體
開發板
排針腳位
開機選擇
flash spi
flash nand
build uboot
build kernel
build nuwriter
boot from sdcard
解決"aclocal-1.15 is missing on your system"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ UART0
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ Timer3
    ∗ Timer4
    ∗ Button
    ∗ GPIO(FIQ)
    ∗ GPIO(IRQ)
    ∗ Watchdog Timer(WDT)
    ∗ Phase Locked Loop(PLL)
    ∗ Windowed Watchdog Timer(WWDT)
    ∗ Enhance Timer0 Controller(ETMR0)
    ∗ Enhance Timer1 Controller(ETMR1)
    ∗ Enhance Timer2 Controller(ETMR2)
    ∗ Enhance Timer3 Controller(ETMR3)




(ARM 9) NUC972







規格表
架構圖
中斷表
記憶體
開發板
排針腳位
開機選擇
framebuffer console
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ Timer3
    ∗ Timer4
    ∗ Button
    ∗ GPIO(FIQ)
    ∗ GPIO(IRQ)
    ∗ Watchdog Timer(WDT)
    ∗ Phase Locked Loop(PLL)
    ∗ Windowed Watchdog Timer(WWDT)
    ∗ Enhance Timer0 Controller(ETMR0)
    ∗ Enhance Timer1 Controller(ETMR1)
    ∗ Enhance Timer2 Controller(ETMR2)
    ∗ Enhance Timer3 Controller(ETMR3)




(ARM 9) F1C100S







開發板
電路圖
記憶體
中斷表
溫度量測
內部架構圖
mksunxi.c
System Bus
build uboot
製作JTAG連接器
如何超頻到2.0GHz
BROM ffff0000.s
BROM ffff4000.s
build sunxi-tools
flash image(sdcard)
build kernel 4.14.0
如何透過JLink初始化DRAM
為何程式無法從MicroSD啟動
如何在MicroSD啟動下改成SPI啟動
如何將UBoot的輸出訊息轉到UART1
如何使用J-Link GDB Server和IDA Pro除錯程式
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ CCU
    ∗ INTC
    ∗ DRAM
    ∗ UART
    ∗ SDMMC
    ∗ KEYADC
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ TWI(I2C)
    ∗ Watchdog
    ∗ SPI(NOR Flash)




(ARM 9) F1C200S







開發板
電路圖
記憶體
中斷表
溫度量測
版本差異
排針腳位
內部架構圖
mksunxi.c
System Bus
Build Nginx
製作JTAG連接器
ESP8089除錯紀錄
如何超頻到2.0GHz
為何程式無法從MicroSD啟動
如何在MicroSD啟動下改成SPI啟動
如何使用J-Link GDB Server和IDA Pro除錯程式
解決"nginx: [emerg] getgrnam(nogroup) failed"問題
解決"nginx: [alert] shmget(384) failed (38: Function not implemented)"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ CCU
    ∗ INTC
    ∗ DRAM
    ∗ UART
    ∗ SDMMC
    ∗ Button
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ TWI(I2C)
    ∗ Watchdog
    ∗ SPI(NAND Flash)




(ARM 9) BK3231







腳位



(ARM 11) BCM2835







接腳
開發板
中斷表
開機順序
Peripheral Address
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
QEMU
    ∗ 安裝系統




(ARM 11) BCM2835







開發板
中斷表
開機順序
P5 Header
Peripheral Address
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M0+) RP2040







接腳
腳位
電路圖
開發板
Overview
Bus
GPIO
build pico-sdk
build pico-extras
C/C++
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M0+) SAMD21G18







腳位
開發板
中斷表
記憶體
Input Configuration
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M0+) LPC810







開發板
記憶體
中斷表
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M0+) LPC812







中斷表
build lpc21isp
如何使用lpc21isp燒錄
Assembly
    ∗ LED
    ∗ Button




(ARM Cortex-M3) STM32F103







腳位
開發板
中斷表
Memory Map
Pull-up/Pull-Down
Debug STM32 on Debian x64
如何透過UART燒錄程式(Flash Loader)
如何透過ST-LINK V2燒錄程式(OpenOCD)
如何使用N900透過ST-LINK V2燒錄程式(OpenOCD)
如何使用N900透過ST-LINK V2除錯程式(OpenOCD + GDB)
解決"section .plt LMA overlaps section .dynamic LMA"問題
解決"Cannot insert breakpoint 1. Cannot access memory at address xxx"問題
解決"Error: jtag status contains invalid mode value - communication failure"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ UART
    ∗ Button
    ∗ I/O Toggle 21MHz




(ARM Cortex-M4) STM32F429







接腳
中斷表
Register Address
Port Configuration
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M4) MK20DX256







接腳
開發板
中斷表
電路圖
開機流程
Register Address
build teensy_loader_cli
如何透過teensy_loader_cli燒錄程式
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-M4) nRF52840 (Arduino Nano 33 BLE)







接腳
電路圖
如何使用Serial
如何防止IP5306自動斷電
如何透過ST-LINK V2燒錄程式(OpenOCD)
解決NRF24L01只能傳送不能接收問題
C/C++
    ‐ 開發環境
    ‐ LED




(ARM Cortex-M7) RT1062







接腳
開發板
電路圖
中斷表
build teensy_loader_cli
如何透過teensy_loader_cli燒錄程式
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-A5) RDA8810PL







create ubi.img
flash image(nand)
build all
build buildroot
build uboot(pdl1、pdl2)
pinout(lcd)
pinout(panel)
pinout(camera)
pinout(header)
pinout(dip switch)
如何輸出詳細的Kernel訊息




(ARM Cortex-A7) T113-S3 (MangoPi MQ-R)







接腳
腳位
開發板
中斷表
電路圖
方塊圖
mksunxi.c
build xboot
build awboot
如何從MicroSD啟動
build kernel 6.0.1
分析XBoot GT911無法觸發中斷的原因
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-A7) V3S (Lichee Pi Zero)







接腳
開發板
電路圖
方塊圖
mksunxi.c
Memory Map
build uboot
build sunxi-tools
build kernel 6.3.5
build kernel 4.10.15
如何將uboot的輸出訊息轉到UART1
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ CCU
    ∗ UART
    ∗ Timer0
    ∗ Timer1
    ∗ Timer2
    ∗ Watchdog
    ∗ GIC
    ∗ HS Timer0
    ∗ HS Timer1




(ARM Cortex-A7) H3 (NanoPi M1)







接腳
電路圖
方塊圖
Layout
mksunxi.c
如何初始化R_GPIO
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(ARM Cortex-A7) H3 (NanoPi NEO)







接腳
電路圖
開發板
Layout
mksunxi.c




(ARM Cortex-A8) OSD3358







腳位
製作開機SDCard
build buildroot
build uboot 201507
build uboot 201910
build kernel 4.14.108




(ARM Cortex-A8) AM3354







Build UBoot
Build Kernel 4.1.18
開發板
製作SDCard開機片
從SDCard燒錄到Nand(經由UBoot)
解決buildroot無法登入的問題
解決顯示在LCD上面的圖形會緩慢移動的問題
解決"Frame Synchronization Lost Enabled Interrupt"問題
解決"VFS: Cannot open root device "mmcblk0p2" or unknown-block"
C/C++
    ∗ 2.4" IPS 320x240(ST7789V)




(ARM Cortex-A8) AM3358







Pinout
PinMux表
Build All
Build GDB
Build PCSX ReARMed
Flash Image
製作出最精簡的系統
為何LCD Ping-Pongs Buffer顯示會閃爍
解決LIDD DMA在中斷後無法啟動的問題
解決"ERROR: "__clk_get_name" ... undefined!"
解決SDL_PollEvent()無法取得Keyboard Event的問題
解決"Unhandled fault: ... non-linefetch (0x1028)"
解決PCSX ReARMed(--platform=generic)無法執行遊戲的問題
解決"ERROR: "clk_register_min_divider" ... undefined!"
解決"gzgetc error: request for member 'next' ... union"
解決"error: SDL_SysWMinfo ... has no member named info"
C/C++
    ∗ LED(GPIO)
    ∗ LED(Register)
    ∗ Keyboard(Polling)
    ∗ 2.0" IPS 320x240(ILI9335)(GPIO)
    ∗ 2.0" IPS 320x240(ILI9335)(Register)
    ∗ 移植PCM5102A音效驅動程式
    ∗ 移植Framebuffer顯示驅動程式(DMA)
    ∗ 移植Framebuffer顯示驅動程式(Polling)




(ARM Cortex-A53) S5P6818







Build UBoot
Build Kernel
Flash Image(SDCard)




(ARM Cortex-A53) BCM2837







Build Kernel(N900)
Build Kernel(Debian x64)




(ARM Cortex-A53) RK3328







UART
Build All




(ARM Cortex-A53) S32G399







Build U-Boot
Build Kernel
解決ntpd -gq resulted in error問題




MIPS







Register
Instruction Set
Memory Map(kuseg、kseg0、kseg1、kseg2)
⊕ OPCode
    ∗ MIPS I
    ∗ MIPS II
    ∗ MIPS III
    ∗ MIPS IV




(MIPS II) M200 (Newton1)







開發板
UART輸出
Flash Image
Build UBoot
Build Kernel




(MIPS 24Kc) AR9331 (JS9331)







腳位
開發板
UART輸出




(MIPS 24KEc) MT7688 (LinkIt Smart 7688)







腳位
開發板
Build UBoot
Build OpenWRT
為何系統一直重啟
Build Kernel 3.18.44
如何產生LinkIt7688-squashfs-sysupgrade.bin
解決"mt_wifi.ko_3.18.45 No such file or directory"問題
解決"node_modules/mraa/* No such file or directory"問題
解決"squashfs: SQUASHFS error: Filesystem uses "zlib" compression"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ CPU Clock
    ∗ Timer0(Polling)
    ∗ Timer1(Polling)
    ∗ Watchdog(Polling)




(MIPS 24KEc) MT7688 (LinkIt Smart 7688 Duo)







腳位
開發板
中斷表
Memory Map
Clock Diagram
載入SPI的執行位址
Build Kernel 5.4.83
Branch、Jump指令的差異
解決"can't open /dev/null /dev/console: No such file or directory"問題
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button
    ∗ CPU Clock
    ∗ Timer0(Polling)
    ∗ Timer1(Polling)
    ∗ Watchdog(Polling)




(MIPS 24KEc) MT7688 (HLK-RM08S)







腳位
開發板




(MIPS M4K) PIC32MX795 (UBW32)







開發板
安裝XC32
安裝MPLAB X
C/C++
    ∗ LED




RISC-V







Register




(RV64GCV + RV32GCP + RV32EMC) BL808 (Sipeed M1s Dock)







接腳
電路圖
開發板
Boot mode
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(RV64GCV + RV32GCP + RV32EMC) BL808 (Ox64)







接腳
方塊圖
電路圖




(RV64GCV) D1-H (哪吒)







電路圖
開發板




(RV64GCV) F133 (MangoPi MQ-R)







接腳
電路圖
開發板
build xboot
gen_checksum.py
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(RV32IMAC) GD32VF103 (Sipeed Longan Nano)







腳位
接腳
開發板
電路圖
Flash
Memory Map
Assembly
    ∗ 開發環境
    ∗ LED
    ∗ Button




(RV64) K210 (Sipeed Maix Bit)







Pinout
使用kflash燒錄
Build Kendryte Standalone SDK
連接OpenOCD(SiPEED USB-JTAG/TTL)
連接OpenOCD + GDB(SiPEED USB-JTAG/TTL)
C/C++
    ∗ Hello, world!
    ∗ LED
    ∗ Button




Intel







80386
    ∗ 指令集
    ∗ jxx (flags)




(Intel Quark) D2000







連接OpenOCD
連接OpenOCD + GDB
Build Intel Quark Bootloader
Build Intel Quark Microcontroller Software Interface(QMSI)
C/C++
    ∗ Hello, world!