@@ -731,6 +731,10 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
731731 for node in fdt. all_nodes ( ) {
732732 if node. name ( ) . starts_with ( "memory@" ) || node. name ( ) == "memory" {
733733 memory_nodes_found += 1 ;
734+
735+ let reg = node. reg ( ) . expect ( "Memory node should have reg property" ) ;
736+ let reg_infos: Vec < _ > = reg. collect ( ) ;
737+
734738 info ! (
735739 "[{}] Found memory node: {} (level={})" ,
736740 name,
@@ -763,28 +767,14 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
763767 s
764768 ) ;
765769 info ! ( "[{}] device_type = \" {}\" " , name, s) ;
766- } else if let Some ( reg) = prop. as_reg (
767- node. context . parent_address_cells . into ( ) ,
768- node. context . parent_size_cells . into ( ) ,
769- ) {
770+
770771 found_reg = true ;
771- let reg_infos: Vec < _ > = reg. iter ( ) . collect ( ) ;
772- let u32_values: Vec < _ > = reg. as_u32_iter ( ) . collect ( ) ;
773772
774773 info ! ( "[{}] reg property found:" , name) ;
775774 info ! (
776775 "[{}] address_cells={}, size_cells={}" ,
777- name,
778- node. context. parent_address_cells,
779- node. context. parent_size_cells
780- ) ;
781- info ! (
782- "[{}] raw data ({} bytes): {:02x?}" ,
783- name,
784- reg. as_slice( ) . len( ) ,
785- reg. as_slice( )
776+ name, node. context. parent_address_cells, node. context. parent_size_cells
786777 ) ;
787- info ! ( "[{}] u32 values: {:x?}" , name, u32_values) ;
788778
789779 // 平台特定验证
790780 if name == "QEMU" {
@@ -809,23 +799,6 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
809799 reg_info. size
810800 ) ;
811801
812- // 验证 u32 值格式
813- assert_eq ! (
814- u32_values. len( ) ,
815- 4 ,
816- "QEMU memory reg should have 4 u32 values"
817- ) ;
818- assert_eq ! ( u32_values[ 0 ] , 0x0 , "QEMU memory high address should be 0" ) ;
819- assert_eq ! (
820- u32_values[ 1 ] , 0x40000000 ,
821- "QEMU memory low address should be 0x40000000"
822- ) ;
823- assert_eq ! ( u32_values[ 2 ] , 0x0 , "QEMU memory high size should be 0" ) ;
824- assert_eq ! (
825- u32_values[ 3 ] , 0x8000000 ,
826- "QEMU memory low size should be 0x8000000"
827- ) ;
828-
829802 info ! (
830803 "[{}] QEMU memory validated: address={:#x}, size={} bytes" ,
831804 name,
@@ -841,36 +814,9 @@ fn test_memory_in_fdt(raw: &[u8], name: &str) {
841814 "[{}] reg[{}]: address={:#x}, size={:?}" ,
842815 name, i, reg_info. address, reg_info. size
843816 ) ;
844-
845- // RPi 4B 的特殊情况 - 当前测试数据显示地址和大小为0
846- // 这可能是测试数据的特殊情况,我们只验证基本结构
847- if node. context . parent_size_cells == 1 {
848- assert_eq ! (
849- reg. as_slice( ) . len( ) % 12 ,
850- 0 ,
851- "RPi 4B reg data should be multiple of 12 bytes (2+1 cells)"
852- ) ;
853- } else {
854- assert_eq ! (
855- reg. as_slice( ) . len( ) % 16 ,
856- 0 ,
857- "RPi 4B reg data should be multiple of 16 bytes (2+2 cells)"
858- ) ;
859- }
860817 }
861818 }
862819
863- // 验证 reg 数据长度的一致性
864- let expected_entry_size =
865- ( node. context . parent_address_cells + node. context . parent_size_cells ) * 4 ;
866- assert_eq ! (
867- reg. as_slice( ) . len( ) % expected_entry_size as usize ,
868- 0 ,
869- "Reg data length should be multiple of entry size {} for node {}" ,
870- expected_entry_size,
871- node. name( )
872- ) ;
873-
874820 for ( i, reg_info) in reg_infos. iter ( ) . enumerate ( ) {
875821 info ! (
876822 "[{}] reg[{}]: address={:#x}, size={:?}" ,
0 commit comments