MCU firmware release validation: HEX, S-record, Cortex-M gates and flash plans
Dependencies
moon run cmd/moon-firmware -- gate tests/fixtures/cortex_m_release.hex --flash-start 0x08000000 --flash-end 0x0800FFFF --ram-start 0x20000000 --ram-end 0x2000FFFF --page-size 0x400Release gate: passed
Flash: 0x08000000..0x0800FFFF
Vector table: 0x08000000
Initial stack pointer: 0x20010000
Reset handler: 0x08000008
Flash pages: 1
Page size: 1024 bytes
Payload: 9 bytes
Output: 1024 bytes
Erase padding: 1015 bytes
Erase value: 0xFF
0x08000000..0x080003FF: 9 payload bytesmoon update
moon run cmd/moon-firmware -- inspect tests/fixtures/basic.hexFormat: Intel HEX
Payload: 4 bytes
Segments: 1
Address range: 0x00000010 - 0x00000013
Address span: 4 bytes
Gaps: 0
Gap bytes: 0
Entry point: none
Checksum: valid
Record count: 2
Warnings: 0moon install ./cmd/moon-firmware --bin ./artifacts/install
./artifacts/install/moon-firmware.exe --version
./artifacts/install/moon-firmware.exe inspect tests/fixtures/basic.hexmoon run cmd/moon-firmware -- verify tests/fixtures/basic.hex
moon run cmd/moon-firmware -- convert tests/fixtures/basic.hex artifacts/basic.srec --force
moon run cmd/moon-firmware -- convert artifacts/basic.srec artifacts/basic-round.hex --force
moon run cmd/moon-firmware -- convert tests/fixtures/basic.hex artifacts/basic.bin --force
moon run cmd/moon-firmware -- convert artifacts/basic.bin artifacts/basic-from-bin.hex --base-address 0x10 --force
moon run cmd/moon-firmware -- convert artifacts/basic.bin artifacts/basic-from-bin.srec --base-address 0x10 --force
moon run cmd/moon-firmware -- merge tests/fixtures/basic.hex tests/fixtures/extended_linear.hex -o artifacts/merged.hex --force
moon run cmd/moon-firmware -- extract tests/fixtures/extended_linear.hex --start 0x08000001 --end 0x08000002 -o artifacts/extracted.hex --force
moon run cmd/moon-firmware -- diff tests/fixtures/basic.hex tests/fixtures/changed.hex
moon run cmd/moon-firmware -- gate tests/fixtures/cortex_m_release.hex --flash-start 0x08000000 --flash-end 0x0800FFFF --ram-start 0x20000000 --ram-end 0x2000FFFF --page-size 0x400Identical bytes: 2
Changed bytes: 2
Added bytes: 0
Removed bytes: 0
Entry changed: false
Changed ranges:
0x00000011..0x00000012
Only left:
none
Only right:
nonemoon run examples/inspect
moon run examples/convert| 格式 | 记录 | 解析 | 生成 | 结构校验 |
|---|---|---|---|---|
| Intel HEX | 00 Data | ✓ | ✓ | 长度、地址、checksum、overlap |
| Intel HEX | 01 EOF | ✓ | ✓ | 唯一性、位置、缺失 |
| Intel HEX | 02 Extended Segment | ✓ | 解析 | 长度、HEX86 语义 |
| Intel HEX | 03 Start Segment | ✓ | ✓ | CS:IP 入口 |
| Intel HEX | 04 Extended Linear | ✓ | ✓ | 64 KiB 边界 |
| Intel HEX | 05 Start Linear | ✓ | ✓ | 32-bit 入口 |
| S-Record | S0、S1、S2、S3 | ✓ | ✓ | 类型、地址宽度、count、checksum |
| S-Record | S5、S6 | ✓ | ✓ | data record 总数 |
| S-Record | S7、S8、S9 | ✓ | ✓ | 与数据宽度匹配、入口 |
line 1, column 18: firmware.hex: checksum mismatchmoon fmt --check
moon check
moon test
moon info
moon build
moon coverage analyze -- -f summary
moon bench --release benchmarks
moon package --listmodel/ 稀疏地址模型、诊断与策略
codec/ 安全的公共十六进制与文本行基础设施
ihex/ Intel HEX record、parser、writer、checksum
srec/ Motorola S-Record codec
firmware/ 检测、转换、merge、extract、diff、inspect
validation/ 目标布局与 flash page plan
analysis/ 镜像 checksum、搜索、word 与 Cortex-M 分析
cli/ 参数、文件 IO、命令执行
cmd/ moon-firmware 原生入口
examples/ 可运行 Library API 示例
benchmarks/ 官方 MoonBit benchmark
tests/ 原创最小 fixture
docs/ 设计、格式、测试、参考与实测记录fn checksum_image(image : FirmwareImage, range : AddressRange, algorithm? : ImageChecksumAlgorithm, fill? : Byte, max_bytes? : Int) -> ImageChecksum raise FirmwareErrorfn fill_range(image : FirmwareImage, range : AddressRange, value : Byte, max_added? : Int) -> FirmwareImage raise FirmwareErrorfn find_ascii_strings(image : FirmwareImage, min_length? : Int, max_strings? : Int, max_retained_bytes? : Int) -> Array[AsciiSpan] raise FirmwareErrorfn find_pattern(image : FirmwareImage, pattern : MaskedPattern, within? : AddressRange, max_matches? : Int) -> Array[Int64] raise FirmwareErrorfn find_uint(image : FirmwareImage, value : Int64, width : Int, order? : ByteOrder, alignment? : Int, max_matches? : Int) -> Array[Int64] raise FirmwareErrorfn inspect_cortex_m_vectors(image : FirmwareImage, base_address : Int64, stack_alignment? : Int) -> CortexMVectorTable raise FirmwareErrorfn load_firmware(bytes : Bytes, hint? : Format, base_address? : Int64, options? : ParseOptions) -> FirmwareImage raise FirmwareErrorfn merge_images(images : Array[FirmwareImage], policy? : OverlapPolicy, entry_policy? : EntryPolicy) -> FirmwareImage raise FirmwareErrorfn read_uint(image : FirmwareImage, address : Int64, width : Int, order? : ByteOrder) -> Int64 raise FirmwareErrorfn validate_cortex_m_release(image : FirmwareImage, options : CortexMReleaseOptions) -> CortexMReleaseReport raise FirmwareErrorfn validate_layout(image : FirmwareImage, options : LayoutOptions) -> LayoutReport raise FirmwareErrorfn write_uint(image : FirmwareImage, address : Int64, value : Int64, width : Int, order? : ByteOrder, policy? : OverlapPolicy) -> FirmwareImage raise FirmwareErrorInstall
Download zipMCU firmware release validation: HEX, S-record, Cortex-M gates and flash plans
Dependencies