解析天启rk3288源码 /kernel/drivers/char/virtd
virtd为编译后产生的中间文件,可使用ELF格式逆向
1、ELF文件内容解析
readelf: 可解析ELF文件的所有内容;
strings: 查看ELF文件中的字符串;
file : 查看ELF文件的信息;
nm : 查看ELF文件中的符号信息;
ldd : 查看ELF文件所依赖的库文件;
2、objdump
用于对ELF文件进行反汇编;
objdump -d ;反汇编部分可执行的二进制代码;
objdump -D ;反汇编全部的可执行的二进制代码;
objdump -S ;尽量把可执行的二进制代码反汇编成源码;
3、hexdump
以十六进制格式查看ELF格式的二进制可执行文件的内容;
hexdump -C elf_file_name
readelf -a virtd
查看文件信息
ELF Header:Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32Data: 2's complement, little endianVersion: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: REL (Relocatable file)Machine: ARMVersion: 0x1Entry point address: 0x0Start of program headers: 0 (bytes into file)Start of section headers: 7532 (bytes into file)Flags: 0x5000000, Version5 EABISize of this header: 52 (bytes)Size of program headers: 0 (bytes)Number of program headers: 0Size of section headers: 40 (bytes)Number of section headers: 32Section header string table index: 29Section Headers:[Nr] Name Type Addr Off Size ES Flg Lk Inf Al[ 0] NULL 00000000 000000 000000 00 0 0 0[ 1] .text PROGBITS 00000000 000034 001728 00 AX 0 0 4[ 2] .rel.text REL 00000000 00226c 000490 08 30 1 4[ 3] .init.text PROGBITS 00000000 00175c 000090 00 AX 0 0 4[ 4] .rel.init.text REL 00000000 0026fc 000060 08 30 3 4[ 5] .exit.text PROGBITS 00000000 0017ec 00000c 00 AX 0 0 4[ 6] .rel.exit.text REL 00000000 00275c 000010 08 30 5 4[ 7] .rodata PROGBITS 00000000 0017f8 000090 00 A 0 0 4[ 8] .rel.rodata REL 00000000 00276c 000030 08 30 7 4[ 9] .rodata.str1.1 PROGBITS 00000000 001888 000158 01 AMS 0 0 1[10] .ARM.extab.init.t PROGBITS 00000000 0019e0 000000 00 A 0 0 1[11] .ARM.exidx.init.t ARM_EXIDX 00000000 0019e0 000008 00 AL 3 0 4[12] .rel.ARM.exidx.in REL 00000000 00279c 000010 08 30 11 4[13] .ARM.extab.exit.t PROGBITS 00000000 0019e8 000000 00 A 0 0 1[14] .ARM.exidx.exit.t ARM_EXIDX 00000000 0019e8 000008 00 AL 5 0 4[15] .rel.ARM.exidx.ex REL 00000000 0027ac 000010 08 30 14 4[16] .ARM.extab PROGBITS 00000000 0019f0 00000c 00 A 0 0 4[17] .ARM.exidx ARM_EXIDX 00000000 0019fc 000130 00 AL 1 0 4[18] .rel.ARM.exidx REL 00000000 0027bc 000158 08 30 17 4[19] .data PROGBITS 00000000 001b2c 000048 00 WA 0 0 4[20] .rel.data REL 00000000 002914 000028 08 30 19 4[21] .exitcall.exit PROGBITS 00000000 001b74 000004 00 WA 0 0 4[22] .rel.exitcall.exi REL 00000000 00293c 000008 08 30 21 4[23] .initcall7s.init PROGBITS 00000000 001b78 000004 00 WA 0 0 4[24] .rel.initcall7s.i REL 00000000 002944 000008 08 30 23 4[25] .bss NOBITS 00000000 001b7c 000024 00 WA 0 0 4[26] .note.GNU-stack PROGBITS 00000000 001b7c 000000 00 0 0 1[27] .comment PROGBITS 00000000 001b7c 00008d 01 MS 0 0 1[28] .ARM.attributes ARM_ATTRIBUTES 00000000 001c09 00002f 00 0 0 1[29] .shstrtab STRTAB 00000000 001c38 000134 00 0 0 1[30] .symtab SYMTAB 00000000 00294c 000b80 10 31 115 4[31] .strtab STRTAB 00000000 0034cc 0005fc 00 0 0 1 Key to Flags:W (write), A (alloc), X (execute), M (merge), S (strings)I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)O (extra OS processing required) o (OS specific), p (processor specific)There are no section groups in this file.There are no program headers in this file.Relocation section '.rel.text' at offset 0x226c contains 146 entries:Offset Info Type Sym.Value Sym. Name 00000078 00000102 R_ARM_ABS32 00000000 .text 0000007c 00000102 R_ARM_ABS32 00000000 .text 00000080 00000102 R_ARM_ABS32 00000000 .text 00000084 00000102 R_ARM_ABS32 00000000 .text 00000088 00000102 R_ARM_ABS32 00000000 .text 00000114 00009e1c R_ARM_CALL 00000000 memset 00000134 00009e1c R_ARM_CALL 00000000 memset 0000014c 00009e1c R_ARM_CALL 00000000 memset 00000164 00009e1c R_ARM_CALL 00000000 memset 000001a4 0000871c R_ARM_CALL 00000000 sg_init_one 000001c4 0000981c R_ARM_CALL 00000000 mmc_set_data_timeout 000001d0 0000a31c R_ARM_CALL 00000000 mmc_wait_for_req 000001ec 00009c1c R_ARM_CALL 00000000 dev_err 00000210 00009c1c R_ARM_CALL 00000000 dev_err 00000228 00007a1c R_ARM_CALL 00000000 ioctl_rpmb_card_status 00000248 00009c1c R_ARM_CALL 00000000 dev_err 00000258 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 0000025c 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00000260 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00000290 0000961c R_ARM_CALL 00000000 warn_slowpath_null 000002d0 0000801c R_ARM_CALL 00000000 mmc_get_card 000002dc 0000a91c R_ARM_CALL 00000000 mmc_blk_part_switch 000002fc 00009c1c R_ARM_CALL 00000000 dev_err 0000030c 0000991c R_ARM_CALL 00000000 mmc_blk_reset 00000320 0000b41c R_ARM_CALL 00000000 mmc_blk_reset_success 00000338 00009c1c R_ARM_CALL 00000000 dev_err 000003a8 00009c1c R_ARM_CALL 00000000 dev_err 000003b0 0000771c R_ARM_CALL 00000000 dev_get_drvdata 000003bc 0000a91c R_ARM_CALL 00000000 mmc_blk_part_switch 000003c4 0000ab1c R_ARM_CALL 00000000 mmc_put_card 000003e0 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 000003e4 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 000003e8 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 000003ec 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00000400 0000ae1c R_ARM_CALL 00000000 mmc_blk_get 00000434 0000931c R_ARM_CALL 00000000 mmc_blk_put 00000484 0000771c R_ARM_CALL 00000000 dev_get_drvdata 000004a4 00008a1c R_ARM_CALL 00000000 kmem_cache_alloc_trace 000004bc 00009b1c R_ARM_CALL 00000000 __mutex_init 000004dc 0000b702 R_ARM_ABS32 00000000 kmalloc_caches 000004e0 00000f02 R_ARM_ABS32 00000000 .bss 000004e4 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 000004e8 00000c02 R_ARM_ABS32 00000000 .data 000005c4 00008f02 R_ARM_ABS32 00000000 arm_delay_ops 000005cc 00000f02 R_ARM_ABS32 00000000 .bss 000006c4 00008f02 R_ARM_ABS32 00000000 arm_delay_ops 00000714 0000901c R_ARM_CALL 000005e8 rk312x_efuse_readregs_ 00000758 0000941c R_ARM_CALL 00000000 crc32_le 00000768 0000941c R_ARM_CALL 00000000 crc32_le 00000784 00008e02 R_ARM_ABS32 00000000 rockchip_soc_id 00000790 00000f02 R_ARM_ABS32 00000000 .bss 00000794 00000f02 R_ARM_ABS32 00000000 .bss 000007b4 0000821c R_ARM_CALL 000006d0 system_efuse_serial 000007dc 00008c02 R_ARM_ABS32 00000000 system_serial_low 000007e0 0000a802 R_ARM_ABS32 00000000 system_serial_high 000007e8 00007b1d R_ARM_JUMP24 00000000 complete 000007ec 00000c02 R_ARM_ABS32 00000000 .data 000007f4 0000a21d R_ARM_JUMP24 00000000 wait_for_completion 000007f8 00000c02 R_ARM_ABS32 00000000 .data 0000080c 0000771c R_ARM_CALL 00000000 dev_get_drvdata 00000834 00008a1c R_ARM_CALL 00000000 kmem_cache_alloc_trace 0000084c 0000831c R_ARM_CALL 00000000 memcpy 00000894 0000861d R_ARM_JUMP24 000007e4 drm_dev_complete 00000898 0000b702 R_ARM_ABS32 00000000 kmalloc_caches 0000089c 00000c02 R_ARM_ABS32 00000000 .data 000008b0 0000851c R_ARM_CALL 00000000 kfree 000008c0 0000851c R_ARM_CALL 00000000 kfree 000008cc 00000f02 R_ARM_ABS32 00000000 .bss 000008d0 00000c02 R_ARM_ABS32 00000000 .data 000008e0 00000f02 R_ARM_ABS32 00000000 .bss 00000954 0000951c R_ARM_CALL 00000000 mutex_lock 0000097c 0000a71c R_ARM_CALL 000008e4 drm_cmd_fixup 000009a8 0000aa1c R_ARM_CALL 00000000 mutex_unlock 00000a18 00000102 R_ARM_ABS32 00000000 .text 00000a1c 00000102 R_ARM_ABS32 00000000 .text 00000a20 00000102 R_ARM_ABS32 00000000 .text 00000a24 00000102 R_ARM_ABS32 00000000 .text 00000a50 0000a01c R_ARM_CALL 00000000 __memzero 00000ac0 0000951c R_ARM_CALL 00000000 mutex_lock 00000ad0 0000a71c R_ARM_CALL 000008e4 drm_cmd_fixup 00000af4 0000aa1c R_ARM_CALL 00000000 mutex_unlock 00000bf8 0000951c R_ARM_CALL 00000000 mutex_lock 00000c08 0000a71c R_ARM_CALL 000008e4 drm_cmd_fixup 00000c2c 0000aa1c R_ARM_CALL 00000000 mutex_unlock 00000c4c 0000951c R_ARM_CALL 00000000 mutex_lock 00000c60 0000831c R_ARM_CALL 00000000 memcpy 00000c6c 0000aa1d R_ARM_JUMP24 00000000 mutex_unlock 00000ca4 0000831c R_ARM_CALL 00000000 memcpy 00000cb4 00008a1c R_ARM_CALL 00000000 kmem_cache_alloc_trace 00000cc8 00008a1c R_ARM_CALL 00000000 kmem_cache_alloc_trace 00000dc4 0000af1c R_ARM_CALL 00000930 drm_cmd_seq 00000dd0 0000b702 R_ARM_ABS32 00000000 kmalloc_caches 00000dd4 00000402 R_ARM_ABS32 00000000 .rodata 00000e8c 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 00000e98 00009a1c R_ARM_CALL 00000000 printk 00000ea4 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00000ea8 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00001044 0000971c R_ARM_CALL 00000000 console_lock 0000104c 0000b51c R_ARM_CALL 00000000 msleep 0000105c 00007e1c R_ARM_CALL 00000000 __arm_ioremap 00001070 00009a1d R_ARM_JUMP24 00000000 printk 000010a4 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 000010a8 00007802 R_ARM_ABS32 00000000 outer_cache 000010b4 0000911c R_ARM_CALL 00000c70 drm_get_version 000010cc 0000761c R_ARM_CALL 00000798 get_system_serial 000010d4 0000a61c R_ARM_CALL 00000c80 drm_get_data 00001104 0000881c R_ARM_CALL 000008d4 drm_dev_get 00001120 0000a51d R_ARM_JUMP24 00000000 nonseekable_open 00001150 0000ac1c R_ARM_CALL 00000000 __get_user_4 00001164 0000ac1c R_ARM_CALL 00000000 __get_user_4 00001184 00007c1c R_ARM_CALL 00000000 memdup_user 00001208 0000b31c R_ARM_CALL 00000000 __copy_from_user 0000121c 0000a01c R_ARM_CALL 00000000 __memzero 0000124c 0000a01c R_ARM_CALL 00000000 __memzero 00001298 0000731c R_ARM_CALL 00000b14 drm_read_cmd 000012a4 00007f1c R_ARM_CALL 000009bc drm_cmd_req 000012bc 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 000012d0 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 000012e4 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 00001324 0000b21c R_ARM_CALL 00000000 __copy_to_user 0000133c 0000851c R_ARM_CALL 00000000 kfree 00001344 0000851c R_ARM_CALL 00000000 kfree 0000136c 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00001370 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00001374 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00001388 00008d1c R_ARM_CALL 00000000 capable 000013c8 0000b31c R_ARM_CALL 00000000 __copy_from_user 000013dc 0000a01c R_ARM_CALL 00000000 __memzero 00001400 0000b61c R_ARM_CALL 00000000 __kmalloc 00001464 0000af1c R_ARM_CALL 00000930 drm_cmd_seq 000014b4 0000b21c R_ARM_CALL 00000000 __copy_to_user 000014fc 0000851c R_ARM_CALL 00000000 kfree 00001520 0000851c R_ARM_CALL 00000000 kfree 000015d4 0000761c R_ARM_CALL 00000798 get_system_serial 00001610 0000911c R_ARM_CALL 00000c70 drm_get_version 00001650 0000a61c R_ARM_CALL 00000c80 drm_get_data 00001664 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 00001698 0000b21c R_ARM_CALL 00000000 __copy_to_user 000016b8 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 000016c0 0000741c R_ARM_CALL 00000c88 drm_get_frames_without 000016c8 0000b01c R_ARM_CALL 00000c44 drm_refresh_data 000016d0 0000a61c R_ARM_CALL 00000c80 drm_get_data 000016e0 0000811c R_ARM_CALL 000005d4 dump_hex_buffer 00001714 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 00001718 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 0000171c 00000502 R_ARM_ABS32 00000000 .rodata.str1.1Relocation section '.rel.init.text' at offset 0x26fc contains 12 entries:Offset Info Type Sym.Value Sym. Name 00000004 0000791c R_ARM_CALL 000007f0 drm_dev_wait 00000008 0000881c R_ARM_CALL 000008d4 drm_dev_get 00000014 00009f1c R_ARM_CALL 000007ac system_serial_init 0000001c 0000741c R_ARM_CALL 00000c88 drm_get_frames_without 00000024 0000b01c R_ARM_CALL 00000c44 drm_refresh_data 0000002c 0000a41c R_ARM_CALL 000010ac drm_check 00000058 00009a1c R_ARM_CALL 00000000 printk 00000060 0000a11c R_ARM_CALL 00000000 misc_register 00000074 00008b1c R_ARM_CALL 0000103c vendor_do_fail 00000080 00008e02 R_ARM_ABS32 00000000 rockchip_soc_id 00000088 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 0000008c 00000c02 R_ARM_ABS32 00000000 .dataRelocation section '.rel.exit.text' at offset 0x275c contains 2 entries:Offset Info Type Sym.Value Sym. Name 00000004 0000751d R_ARM_JUMP24 00000000 misc_deregister 00000008 00000c02 R_ARM_ABS32 00000000 .dataRelocation section '.rel.rodata' at offset 0x276c contains 6 entries:Offset Info Type Sym.Value Sym. Name 00000018 00004b02 R_ARM_ABS32 00000f88 vendor_encode_v1 0000001c 00004a02 R_ARM_ABS32 00000f3c vendor_decode_v1 00000024 00009202 R_ARM_ABS32 00000000 noop_llseek 00000044 00006202 R_ARM_ABS32 00001724 drm_ioctl 00000050 00005902 R_ARM_ABS32 000010f8 drm_open 00000058 00005302 R_ARM_ABS32 000010f0 drm_releaseRelocation section '.rel.ARM.exidx.init.text' at offset 0x279c contains 2 entries:Offset Info Type Sym.Value Sym. Name 00000000 0000022a R_ARM_PREL31 00000000 .init.text 00000000 00007d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0Relocation section '.rel.ARM.exidx.exit.text' at offset 0x27ac contains 2 entries:Offset Info Type Sym.Value Sym. Name 00000000 0000032a R_ARM_PREL31 00000000 .exit.text 00000000 00007d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0Relocation section '.rel.ARM.exidx' at offset 0x27bc contains 43 entries:Offset Info Type Sym.Value Sym. Name 00000000 0000012a R_ARM_PREL31 00000000 .text 00000000 00007d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0 00000008 0000012a R_ARM_PREL31 00000000 .text 00000010 0000012a R_ARM_PREL31 00000000 .text 00000018 0000012a R_ARM_PREL31 00000000 .text 00000020 0000012a R_ARM_PREL31 00000000 .text 00000028 0000012a R_ARM_PREL31 00000000 .text 00000030 0000012a R_ARM_PREL31 00000000 .text 00000038 0000012a R_ARM_PREL31 00000000 .text 00000038 0000b100 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr1 0000003c 00000a2a R_ARM_PREL31 00000000 .ARM.extab 00000040 0000012a R_ARM_PREL31 00000000 .text 00000048 0000012a R_ARM_PREL31 00000000 .text 00000050 0000012a R_ARM_PREL31 00000000 .text 00000058 0000012a R_ARM_PREL31 00000000 .text 00000060 0000012a R_ARM_PREL31 00000000 .text 00000068 0000012a R_ARM_PREL31 00000000 .text 00000070 0000012a R_ARM_PREL31 00000000 .text 00000078 0000012a R_ARM_PREL31 00000000 .text 00000080 0000012a R_ARM_PREL31 00000000 .text 00000088 0000012a R_ARM_PREL31 00000000 .text 00000090 0000012a R_ARM_PREL31 00000000 .text 00000098 0000012a R_ARM_PREL31 00000000 .text 000000a0 0000012a R_ARM_PREL31 00000000 .text 000000a8 0000012a R_ARM_PREL31 00000000 .text 000000b0 0000012a R_ARM_PREL31 00000000 .text 000000b8 0000012a R_ARM_PREL31 00000000 .text 000000c0 0000012a R_ARM_PREL31 00000000 .text 000000c8 0000012a R_ARM_PREL31 00000000 .text 000000c8 00007d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0 000000d0 0000012a R_ARM_PREL31 00000000 .text 000000d8 0000012a R_ARM_PREL31 00000000 .text 000000e0 0000012a R_ARM_PREL31 00000000 .text 000000e8 0000012a R_ARM_PREL31 00000000 .text 000000f0 0000012a R_ARM_PREL31 00000000 .text 000000f8 0000012a R_ARM_PREL31 00000000 .text 000000f8 00007d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0 00000100 0000012a R_ARM_PREL31 00000000 .text 00000108 0000012a R_ARM_PREL31 00000000 .text 00000110 0000012a R_ARM_PREL31 00000000 .text 00000118 0000012a R_ARM_PREL31 00000000 .text 00000120 0000012a R_ARM_PREL31 00000000 .text 00000128 0000012a R_ARM_PREL31 00000000 .textRelocation section '.rel.data' at offset 0x2914 contains 5 entries:Offset Info Type Sym.Value Sym. Name 00000000 00001f02 R_ARM_ABS32 000003f0 mmc_blk_drm_cmd_seq 0000001c 00009d02 R_ARM_ABS32 00000014 comp_rdev 00000020 00009d02 R_ARM_ABS32 00000014 comp_rdev 00000028 00000502 R_ARM_ABS32 00000000 .rodata.str1.1 0000002c 00000402 R_ARM_ABS32 00000000 .rodataRelocation section '.rel.exitcall.exit' at offset 0x293c contains 1 entries:Offset Info Type Sym.Value Sym. Name 00000000 00006402 R_ARM_ABS32 00000000 drm_misc_exitRelocation section '.rel.initcall7s.init' at offset 0x2944 contains 1 entries:Offset Info Type Sym.Value Sym. Name 00000000 00005602 R_ARM_ABS32 00000000 drm_misc_initUnwind table index '.ARM.exidx.init.text' at offset 0x19e0 contains 1 entries:0x0 <drm_misc_init>: 0x80a8b0b0Compact model index: 00xa8 pop {r4, r14}0xb0 finish0xb0 finishUnwind table index '.ARM.exidx.exit.text' at offset 0x19e8 contains 1 entries:0x0 <drm_misc_exit>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finishUnwind table index '.ARM.exidx' at offset 0x19fc contains 38 entries:0x0 <drm_request_verify>: 0x80a9b0b0Compact model index: 00xa9 pop {r4, r5, r14}0xb0 finish0xb0 finish0xdc <mmc_drm_send_cmd>: 0x8036afb0Compact model index: 00x36 vsp = vsp + 2200xaf pop {r4, r5, r6, r7, r8, r9, r10, r11, r14}0xb0 finish0x264 <mmc_blk_drm_process>: 0x80b103acCompact model index: 00xb1 0x03 pop {r0, r1}0xac pop {r4, r5, r6, r7, r8, r14}0x3f0 <mmc_blk_drm_cmd_seq>: 0x80aab0b0Compact model index: 00xaa pop {r4, r5, r6, r14}0xb0 finish0xb0 finish0x440 <mmc_blk_drm_part_get>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x47c <drm_rdev_init.constprop.3>: 0x80aab0b0Compact model index: 00xaa pop {r4, r5, r6, r14}0xb0 finish0xb0 finish0x4ec <rk3288_efuse_readregs_drm.constprop.4>: 0x80acb0b0Compact model index: 00xac pop {r4, r5, r6, r7, r8, r14}0xb0 finish0xb0 finish0x5d4 <dump_hex_buffer>: @0x0Compact model index: 10x9b vsp = r110x40 vsp = vsp - 40x84 0x80 pop {r11, r14}0xb0 finish0xb0 finish0x5e8 <rk312x_efuse_readregs_drm>: 0x80b108afCompact model index: 00xb1 0x08 pop {r3}0xaf pop {r4, r5, r6, r7, r8, r9, r10, r11, r14}0x6d0 <system_efuse_serial>: 0x8004a9b0Compact model index: 00x04 vsp = vsp + 200xa9 pop {r4, r5, r14}0xb0 finish0x798 <get_system_serial>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x7ac <system_serial_init>: 0x80a8b0b0Compact model index: 00xa8 pop {r4, r14}0xb0 finish0xb0 finish0x7e4 <drm_dev_complete>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x7f0 <drm_dev_wait>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x7fc <mmc_blk_emmc_add>: 0x80aab0b0Compact model index: 00xaa pop {r4, r5, r6, r14}0xb0 finish0xb0 finish0x8a0 <mmc_blk_emmc_remove>: 0x80b108a9Compact model index: 00xb1 0x08 pop {r3}0xa9 pop {r4, r5, r14}0x8d4 <drm_dev_get>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x8e4 <drm_cmd_fixup>: 0x80a9b0b0Compact model index: 00xa9 pop {r4, r5, r14}0xb0 finish0xb0 finish0x930 <drm_cmd_seq>: 0x80aab0b0Compact model index: 00xaa pop {r4, r5, r6, r14}0xb0 finish0xb0 finish0x9bc <drm_cmd_req>: 0x800bacb0Compact model index: 00x0b vsp = vsp + 480xac pop {r4, r5, r6, r7, r8, r14}0xb0 finish0xb14 <drm_read_cmd>: 0x800ca9b0Compact model index: 00x0c vsp = vsp + 520xa9 pop {r4, r5, r14}0xb0 finish0xc44 <drm_refresh_data>: 0x80a8b0b0Compact model index: 00xa8 pop {r4, r14}0xb0 finish0xb0 finish0xc70 <drm_get_version>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0xc80 <drm_get_data>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0xc88 <drm_get_frames_without_key>: 0x8010a9b0Compact model index: 00x10 vsp = vsp + 680xa9 pop {r4, r5, r14}0xb0 finish0xdd8 <underground_explode>: 0x80b10fa8Compact model index: 00xb1 0x0f pop {r0, r1, r2, r3}0xa8 pop {r4, r14}0xeac <vendor_decode_v1.part.0>: 0x80aab0b0Compact model index: 00xaa pop {r4, r5, r6, r14}0xb0 finish0xb0 finish0xf3c <vendor_decode_v1>: 0x80a8b0b0Compact model index: 00xa8 pop {r4, r14}0xb0 finish0xb0 finish0xf88 <vendor_encode_v1>: 0x8001b0b0Compact model index: 00x01 vsp = vsp + 80xb0 finish0xb0 finish0x103c <vendor_do_fail>: 0x80a8b0b0Compact model index: 00xa8 pop {r4, r14}0xb0 finish0xb0 finish0x10ac <drm_check>: 0x80b103a8Compact model index: 00xb1 0x03 pop {r0, r1}0xa8 pop {r4, r14}0x10f0 <drm_release>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finish0x10f8 <drm_open>: 0x80b108a9Compact model index: 00xb1 0x08 pop {r3}0xa9 pop {r4, r5, r14}0x112c <drm_cmd_copy_from_user>: 0x80b108a9Compact model index: 00xb1 0x08 pop {r3}0xa9 pop {r4, r5, r14}0x11a8 <drm_ioctl_req_cmd>: 0x800c3fabCompact model index: 00x0c vsp = vsp + 520x3f vsp = vsp + 2560xab pop {r4, r5, r6, r7, r14}0x1378 <drm_ioctl_seq_cmd>: 0x80b10faeCompact model index: 00xb1 0x0f pop {r0, r1, r2, r3}0xae pop {r4, r5, r6, r7, r8, r9, r10, r14}0x1548 <__drm_ioctl>: 0x8004a9b0Compact model index: 00x04 vsp = vsp + 200xa9 pop {r4, r5, r14}0xb0 finish0x1724 <drm_ioctl>: 0x80b0b0b0Compact model index: 00xb0 finish0xb0 finish0xb0 finishSymbol table '.symtab' contains 184 entries:Num: Value Size Type Bind Vis Ndx Name0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 SECTION LOCAL DEFAULT 1 2: 00000000 0 SECTION LOCAL DEFAULT 3 3: 00000000 0 SECTION LOCAL DEFAULT 5 4: 00000000 0 SECTION LOCAL DEFAULT 7 5: 00000000 0 SECTION LOCAL DEFAULT 9 6: 00000000 0 SECTION LOCAL DEFAULT 10 7: 00000000 0 SECTION LOCAL DEFAULT 11 8: 00000000 0 SECTION LOCAL DEFAULT 13 9: 00000000 0 SECTION LOCAL DEFAULT 14 10: 00000000 0 SECTION LOCAL DEFAULT 16 11: 00000000 0 SECTION LOCAL DEFAULT 17 12: 00000000 0 SECTION LOCAL DEFAULT 19 13: 00000000 0 SECTION LOCAL DEFAULT 21 14: 00000000 0 SECTION LOCAL DEFAULT 23 15: 00000000 0 SECTION LOCAL DEFAULT 25 16: 00000000 0 SECTION LOCAL DEFAULT 26 17: 00000000 0 SECTION LOCAL DEFAULT 27 18: 00000000 0 SECTION LOCAL DEFAULT 28 19: 00000000 0 FILE LOCAL DEFAULT ABS core.c20: 00000000 0 NOTYPE LOCAL DEFAULT 1 $a21: 00000000 220 FUNC LOCAL DEFAULT 1 drm_request_verify22: 00000078 0 NOTYPE LOCAL DEFAULT 1 $d23: 0000008c 0 NOTYPE LOCAL DEFAULT 1 $a24: 00000000 0 NOTYPE LOCAL DEFAULT 17 $d25: 000000dc 392 FUNC LOCAL DEFAULT 1 mmc_drm_send_cmd26: 00000258 0 NOTYPE LOCAL DEFAULT 1 $d27: 00000264 0 NOTYPE LOCAL DEFAULT 1 $a28: 00000264 396 FUNC LOCAL DEFAULT 1 mmc_blk_drm_process29: 000003e0 0 NOTYPE LOCAL DEFAULT 1 $d30: 000003f0 0 NOTYPE LOCAL DEFAULT 1 $a31: 000003f0 80 FUNC LOCAL DEFAULT 1 mmc_blk_drm_cmd_seq32: 00000440 60 FUNC LOCAL DEFAULT 1 mmc_blk_drm_part_get33: 0000047c 112 FUNC LOCAL DEFAULT 1 drm_rdev_init.constprop.334: 000004dc 0 NOTYPE LOCAL DEFAULT 1 $d35: 000004ec 0 NOTYPE LOCAL DEFAULT 1 $a36: 000004ec 232 FUNC LOCAL DEFAULT 1 rk3288_efuse_readregs_drm37: 000005c0 0 NOTYPE LOCAL DEFAULT 1 $d38: 000005d4 0 NOTYPE LOCAL DEFAULT 1 $a39: 00000000 0 NOTYPE LOCAL DEFAULT 16 $d40: 000006c0 0 NOTYPE LOCAL DEFAULT 1 $d41: 000006d0 0 NOTYPE LOCAL DEFAULT 1 $a42: 00000784 0 NOTYPE LOCAL DEFAULT 1 $d43: 00000798 0 NOTYPE LOCAL DEFAULT 1 $a44: 000007dc 0 NOTYPE LOCAL DEFAULT 1 $d45: 000007e4 0 NOTYPE LOCAL DEFAULT 1 $a46: 000007ec 0 NOTYPE LOCAL DEFAULT 1 $d47: 000007f0 0 NOTYPE LOCAL DEFAULT 1 $a48: 000007f8 0 NOTYPE LOCAL DEFAULT 1 $d49: 000007fc 0 NOTYPE LOCAL DEFAULT 1 $a50: 00000898 0 NOTYPE LOCAL DEFAULT 1 $d51: 000008a0 0 NOTYPE LOCAL DEFAULT 1 $a52: 000008cc 0 NOTYPE LOCAL DEFAULT 1 $d53: 000008d4 0 NOTYPE LOCAL DEFAULT 1 $a54: 000008e0 0 NOTYPE LOCAL DEFAULT 1 $d55: 000008e4 0 NOTYPE LOCAL DEFAULT 1 $a56: 00000a18 0 NOTYPE LOCAL DEFAULT 1 $d57: 00000a28 0 NOTYPE LOCAL DEFAULT 1 $a58: 00000dd0 0 NOTYPE LOCAL DEFAULT 1 $d59: 00000000 0 NOTYPE LOCAL DEFAULT 19 $d60: 00000000 20 OBJECT LOCAL DEFAULT 19 mmc_drm_dev_ops61: 00000000 0 NOTYPE LOCAL DEFAULT 25 $d62: 00000000 0 OBJECT LOCAL DEFAULT 25 __key.2259663: 00000000 4 OBJECT LOCAL DEFAULT 25 grdev64: 00000004 32 OBJECT LOCAL DEFAULT 25 id_buf.2239065: 00000000 0 FILE LOCAL DEFAULT ABS drm.c66: 00000dd8 0 NOTYPE LOCAL DEFAULT 1 $a67: 00000dd8 212 FUNC LOCAL DEFAULT 1 underground_explode68: 00000ea4 0 NOTYPE LOCAL DEFAULT 1 $d69: 000000c8 0 NOTYPE LOCAL DEFAULT 17 $d70: 00000eac 0 NOTYPE LOCAL DEFAULT 1 $a71: 00000eac 144 FUNC LOCAL DEFAULT 1 vendor_decode_v1.part.072: 00000f34 0 NOTYPE LOCAL DEFAULT 1 $d73: 00000f3c 0 NOTYPE LOCAL DEFAULT 1 $a74: 00000f3c 76 FUNC LOCAL DEFAULT 1 vendor_decode_v175: 00000f88 180 FUNC LOCAL DEFAULT 1 vendor_encode_v176: 00001034 0 NOTYPE LOCAL DEFAULT 1 $d77: 0000103c 0 NOTYPE LOCAL DEFAULT 1 $a78: 000010a0 0 NOTYPE LOCAL DEFAULT 1 $d79: 000010ac 0 NOTYPE LOCAL DEFAULT 1 $a80: 00000010 0 NOTYPE LOCAL DEFAULT 7 $d81: 00000000 0 FILE LOCAL DEFAULT ABS mdev.c82: 000010f0 0 NOTYPE LOCAL DEFAULT 1 $a83: 000010f0 8 FUNC LOCAL DEFAULT 1 drm_release84: 000000f8 0 NOTYPE LOCAL DEFAULT 17 $d85: 00000000 0 NOTYPE LOCAL DEFAULT 3 $a86: 00000000 144 FUNC LOCAL DEFAULT 3 drm_misc_init87: 00000080 0 NOTYPE LOCAL DEFAULT 3 $d88: 00000000 0 NOTYPE LOCAL DEFAULT 11 $d89: 000010f8 52 FUNC LOCAL DEFAULT 1 drm_open90: 0000112c 124 FUNC LOCAL DEFAULT 1 drm_cmd_copy_from_user91: 000011a8 464 FUNC LOCAL DEFAULT 1 drm_ioctl_req_cmd92: 00001364 0 NOTYPE LOCAL DEFAULT 1 $d93: 00001378 0 NOTYPE LOCAL DEFAULT 1 $a94: 00001378 464 FUNC LOCAL DEFAULT 1 drm_ioctl_seq_cmd95: 00001548 476 FUNC LOCAL DEFAULT 1 __drm_ioctl96: 00001700 0 NOTYPE LOCAL DEFAULT 1 $d97: 00001724 0 NOTYPE LOCAL DEFAULT 1 $a98: 00001724 4 FUNC LOCAL DEFAULT 1 drm_ioctl99: 00000000 0 NOTYPE LOCAL DEFAULT 5 $a100: 00000000 12 FUNC LOCAL DEFAULT 5 drm_misc_exit101: 00000008 0 NOTYPE LOCAL DEFAULT 5 $d102: 00000000 0 NOTYPE LOCAL DEFAULT 14 $d103: 00000020 0 NOTYPE LOCAL DEFAULT 7 $d104: 00000020 112 OBJECT LOCAL DEFAULT 7 drm_fops105: 00000000 0 NOTYPE LOCAL DEFAULT 21 $d106: 00000000 4 OBJECT LOCAL DEFAULT 21 __exitcall_drm_misc_exit107: 00000024 0 NOTYPE LOCAL DEFAULT 19 $d108: 00000024 36 OBJECT LOCAL DEFAULT 19 vmdrm_miscdev109: 00000000 0 NOTYPE LOCAL DEFAULT 23 $d110: 00000000 4 OBJECT LOCAL DEFAULT 23 __initcall_drm_misc_init7111: 00000000 0 NOTYPE LOCAL DEFAULT 7 $d112: 00000000 0 NOTYPE LOCAL DEFAULT 9 $d113: 000000c9 0 NOTYPE LOCAL DEFAULT 9 $d114: 00000108 0 NOTYPE LOCAL DEFAULT 9 $d115: 00000b14 304 FUNC GLOBAL DEFAULT 1 drm_read_cmd116: 00000c88 336 FUNC GLOBAL DEFAULT 1 drm_get_frames_without_ke117: 00000000 0 NOTYPE GLOBAL DEFAULT UND misc_deregister118: 00000798 20 FUNC GLOBAL DEFAULT 1 get_system_serial119: 00000000 0 NOTYPE GLOBAL DEFAULT UND dev_get_drvdata120: 00000000 0 NOTYPE GLOBAL DEFAULT UND outer_cache121: 000007f0 12 FUNC GLOBAL DEFAULT 1 drm_dev_wait122: 00000000 0 NOTYPE GLOBAL DEFAULT UND ioctl_rpmb_card_status_po123: 00000000 0 NOTYPE GLOBAL DEFAULT UND complete124: 00000000 0 NOTYPE GLOBAL DEFAULT UND memdup_user125: 00000000 0 NOTYPE GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr0126: 00000000 0 NOTYPE GLOBAL DEFAULT UND __arm_ioremap127: 000009bc 344 FUNC GLOBAL DEFAULT 1 drm_cmd_req128: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_get_card129: 000005d4 20 FUNC GLOBAL DEFAULT 1 dump_hex_buffer130: 000006d0 200 FUNC GLOBAL DEFAULT 1 system_efuse_serial131: 00000000 0 NOTYPE GLOBAL DEFAULT UND memcpy132: 00000010 16 OBJECT GLOBAL DEFAULT 7 gvlist133: 00000000 0 NOTYPE GLOBAL DEFAULT UND kfree134: 000007e4 12 FUNC GLOBAL DEFAULT 1 drm_dev_complete135: 00000000 0 NOTYPE GLOBAL DEFAULT UND sg_init_one136: 000008d4 16 FUNC GLOBAL DEFAULT 1 drm_dev_get137: 000008a0 52 FUNC GLOBAL DEFAULT 1 mmc_blk_emmc_remove138: 00000000 0 NOTYPE GLOBAL DEFAULT UND kmem_cache_alloc_trace139: 0000103c 112 FUNC GLOBAL DEFAULT 1 vendor_do_fail140: 00000000 0 NOTYPE GLOBAL DEFAULT UND system_serial_low141: 00000000 0 NOTYPE GLOBAL DEFAULT UND capable142: 00000000 0 NOTYPE GLOBAL DEFAULT UND rockchip_soc_id143: 00000000 0 NOTYPE GLOBAL DEFAULT UND arm_delay_ops144: 000005e8 232 FUNC GLOBAL DEFAULT 1 rk312x_efuse_readregs_drm145: 00000c70 16 FUNC GLOBAL DEFAULT 1 drm_get_version146: 00000000 0 NOTYPE GLOBAL DEFAULT UND noop_llseek147: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_blk_put148: 00000000 0 NOTYPE GLOBAL DEFAULT UND crc32_le149: 00000000 0 NOTYPE GLOBAL DEFAULT UND mutex_lock150: 00000000 0 NOTYPE GLOBAL DEFAULT UND warn_slowpath_null151: 00000000 0 NOTYPE GLOBAL DEFAULT UND console_lock152: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_set_data_timeout153: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_blk_reset154: 00000000 0 NOTYPE GLOBAL DEFAULT UND printk155: 00000000 0 NOTYPE GLOBAL DEFAULT UND __mutex_init156: 00000000 0 NOTYPE GLOBAL DEFAULT UND dev_err157: 00000014 16 OBJECT GLOBAL DEFAULT 19 comp_rdev158: 00000000 0 NOTYPE GLOBAL DEFAULT UND memset159: 000007ac 56 FUNC GLOBAL DEFAULT 1 system_serial_init160: 00000000 0 NOTYPE GLOBAL DEFAULT UND __memzero161: 00000000 0 NOTYPE GLOBAL DEFAULT UND misc_register162: 00000000 0 NOTYPE GLOBAL DEFAULT UND wait_for_completion163: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_wait_for_req164: 000010ac 68 FUNC GLOBAL DEFAULT 1 drm_check165: 00000000 0 NOTYPE GLOBAL DEFAULT UND nonseekable_open166: 00000c80 8 FUNC GLOBAL DEFAULT 1 drm_get_data167: 000008e4 76 FUNC GLOBAL DEFAULT 1 drm_cmd_fixup168: 00000000 0 NOTYPE GLOBAL DEFAULT UND system_serial_high169: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_blk_part_switch170: 00000000 0 NOTYPE GLOBAL DEFAULT UND mutex_unlock171: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_put_card172: 00000000 0 NOTYPE GLOBAL DEFAULT UND __get_user_4173: 000007fc 164 FUNC GLOBAL DEFAULT 1 mmc_blk_emmc_add174: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_blk_get175: 00000930 140 FUNC GLOBAL DEFAULT 1 drm_cmd_seq176: 00000c44 44 FUNC GLOBAL DEFAULT 1 drm_refresh_data177: 00000000 0 NOTYPE GLOBAL DEFAULT UND __aeabi_unwind_cpp_pr1178: 00000000 0 NOTYPE GLOBAL DEFAULT UND __copy_to_user179: 00000000 0 NOTYPE GLOBAL DEFAULT UND __copy_from_user180: 00000000 0 NOTYPE GLOBAL DEFAULT UND mmc_blk_reset_success181: 00000000 0 NOTYPE GLOBAL DEFAULT UND msleep182: 00000000 0 NOTYPE GLOBAL DEFAULT UND __kmalloc183: 00000000 0 NOTYPE GLOBAL DEFAULT UND kmalloc_caches
查看程序静态文本
strings -a virtd
cmd error (%d) data error (%d) Card Status=0x%08X, error %d drivers/char/drm/core.c Invalid RPMB partition switch (%d)! eMMC card reset failed (%d) failed (%d) to handle RPMB request &rdev->lock randNum: 3error to ioremap base 67ff base ret %d key_mac[out]: nonce[out]: data: data: before data: new data: vmdrm0 GCC: (GNU) 4.6.x-google 20120106 (prerelease) GCC: (GNU) 4.6.x-google 20120106 (prerelease) GCC: (GNU) 4.6.x-google 20120106 (prerelease) aeabi .symtab .strtab .shstrtab .rel.text .rel.init.text .rel.exit.text .rel.rodata .rodata.str1.1 .ARM.extab.init.text .rel.ARM.exidx.init.text .ARM.extab.exit.text .rel.ARM.exidx.exit.text .ARM.extab .rel.ARM.exidx .rel.data .rel.exitcall.exit .rel.initcall7s.init .bss .note.GNU-stack .comment .ARM.attributes core.c drm_request_verify mmc_drm_send_cmd mmc_blk_drm_process mmc_blk_drm_cmd_seq mmc_blk_drm_part_get drm_rdev_init.constprop.3 rk3288_efuse_readregs_drm.constprop.4 mmc_drm_dev_ops __key.22596 grdev id_buf.22390 drm.c underground_explode vendor_decode_v1.part.0 vendor_decode_v1 vendor_encode_v1 mdev.c drm_release drm_misc_init drm_open drm_cmd_copy_from_user drm_ioctl_req_cmd drm_ioctl_seq_cmd __drm_ioctl drm_ioctl drm_misc_exit drm_fops __exitcall_drm_misc_exit vmdrm_miscdev __initcall_drm_misc_init7s drm_read_cmd drm_get_frames_without_key misc_deregister get_system_serial dev_get_drvdata outer_cache drm_dev_wait ioctl_rpmb_card_status_poll complete memdup_user __aeabi_unwind_cpp_pr0 __arm_ioremap drm_cmd_req mmc_get_card dump_hex_buffer system_efuse_serial memcpy gvlist kfree drm_dev_complete sg_init_one drm_dev_get mmc_blk_emmc_remove kmem_cache_alloc_trace vendor_do_fail system_serial_low capable rockchip_soc_id arm_delay_ops rk312x_efuse_readregs_drm drm_get_version noop_llseek mmc_blk_put crc32_le mutex_lock warn_slowpath_null console_lock mmc_set_data_timeout mmc_blk_reset printk __mutex_init dev_err comp_rdev memset system_serial_init __memzero misc_register wait_for_completion mmc_wait_for_req drm_check nonseekable_open drm_get_data drm_cmd_fixup system_serial_high mmc_blk_part_switch mutex_unlock mmc_put_card __get_user_4 mmc_blk_emmc_add mmc_blk_get drm_cmd_seq drm_refresh_data __aeabi_unwind_cpp_pr1 __copy_to_user __copy_from_user mmc_blk_reset_success msleep __kmalloc kmalloc_caches
发现一段字符串是 ret %d
跟日志打印吻合,ret 1024,为了查找这个原始打印也废了很大劲
[ 2.456978] sensor_init: Probe name sensors [ 2.456995] sensor-dev.c v1.4 add angle calculation support between two gsensors 2013-09-01 [ 2.457525] rtc_hym8563 0-0051: setting system clock to 2011-01-01 12:14:58 UTC (1293884098) [ 2.463556] rockchip-spdif-card rockchip-spdif-card.25: rk-hdmi-spdif-hifi <-> ff880000.rockchip-spdif mapping ok [ 2.464517] ret 1024 [ 2.464896] usbcore: registered new interface driver snd-usb-audio [ 2.464903] ALSA device list: [ 2.464908] #0: RK_ES8323 [ 2.464912] #1: RK-SPDIF-CARD
我们可以根据里边的函数名称,去找kernel中哪些文件使用过这些函数,并去git还原老版本,估计关联很多。
未解决。。。。。。。。
待续
先暴力恢复老版本,等以后有空了再适配
git reset --hard f5535b6cbc2264aacf9927a95490ae10b00c4fb7
重新编译烧录就可以正常启动android
但还是有几点疑惑:
1. 为什么其他型号的rk3288烧录最新系统会卡在内核驱动初始化,天启自己的rk3288w 1650批次的没问题,但是其他rk3288w 1652 等以后生产的都不行
2. 为什么出问题系统都会卡在这里drm_misc_init,kernel/drivers/char/virtd这个文件到底是为了优化什么功能的,为什么天启不提供源文件,国内都是这样的开源?
转载于:https://www.cnblogs.com/CZM-/p/9652340.html
解析天启rk3288源码 /kernel/drivers/char/virtd相关推荐
- SpringBoot各类型参数解析原理(源码)
上次那篇我们只分析了doDispatch中的getHandler方法(获取执行链,执行链里包括当前请求URL对应的 handler 以及拦截器(Controller.method绑定关系)),今儿继续 ...
- php发卡8.0源码_素材资源解析平台PHP源码 V8.0运营版+会员功能+代理功能+卡密充值...
源码预览 源码介绍 V8版本.最新更新,全新的解析架构. 小白问题一:为什么我不能解析? 答:解析是需要开通目标站VIP的. 小白问题二:竟然要开通VIP,要你这源码干嘛?有毛病.[这个问题真的有人问 ...
- 什么是Mybatis配置解析?(源码+图文)
什么是Mybatis配置解析?(源码+图文) 1. 核心配置文件 mybatis-config.xml configuration(配置)properties(属性)settings(设置)typeA ...
- 源码解析:Spring源码解析笔记(五)接口设计总览
本文由colodoo(纸伞)整理 QQ 425343603 Java学习交流群(717726984) Spring解析笔记 启动过程部分已经完成,对启动过程源码有兴趣的朋友可以作为参考文章. 源码解析 ...
- 百度SEO站群素材资源解析平台系统源码V8.0
素材资源解析平台系统源码V8.0 第三方平台下载站程序千图网千库网等素材网站下载网站 下载地址: http://www.bytepan.com/SkCylUCcHaR 小白问题一:为什么我不能解析? ...
- 【易语言模块】MP3信息标签解析V1.0[源码]分享
最近下载了许多MP3歌曲,好多歌曲的信息不是乱码就是空白,在车载播放器中显示不正常,一个个修改起来很麻烦,就想做一个简便的信息修改器. 在网上找了好久,没有特别合适的mp3标签信息的模块,有一个m ...
- HTML——全网VIP影视解析单页源码 自适应
文章目录[隐藏] 全网VIP影视解析单页源码+自适应 全网VIP影视解析单页源码+自适应 上传源码到服务器,访问即可使用,无需数据库,php版本没有限制 为了界面美观,不添加播放器,跳转到解析接口页面 ...
- 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统
剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...
- 用Html5实现天气预报的原理,HTML5 Canvas和jQuery实时天气预报代码解析「附源码」...
HTML5 Canvas和jQuery实时天气预报代码解析「附源码」 这是一款非常有意思的纯CSS3扁平风格天气预报卡片动画特效.该天气预报特效将各种天气制作为卡片形式,包括下雨,闪电,白天,夜间和下 ...
最新文章
- 什么是RNA-Seq (RNA Sequencing)
- 「NLP」 NLP中应用最广泛的特征抽取模型-LSTM
- mysql中实现分类统计查询的步骤_实验07:数据库的组合查询和统计查询
- springboot项目修改个人头像
- hadoop高速扫盲帖,从零了解hadoop
- 简单实用的分页存储过程,支持多字段排序
- 管理飞扬跋扈的技术部
- IDEA换行CRLF, LF, CR的解释和默认设置
- 作者:丁铖(1992-),男,华东师范大学计算机科学与软件工程学院硕士生。...
- 给用户添加sudo功能
- 【零基础学Java】—成员变量和局部变量(九)
- 微信内置浏览器缓存清理及关闭微信默认的X5内核
- 快速关闭SELinux
- python爬取lol所有英雄信息
- Java锁Synchronized对象锁和类锁区别(搬运)
- MySQL-pymysql模块
- 问题分析报告--读取ORC文件报seek错误
- JAVA实现本月国际国内节日
- 基于ThinkPHP开发的企业建站程序完整版源码
- 塔望食业洞察|中国乳制品市场分析、竞争格局、发展趋势及思考
热门文章
- 战略地位与行动评价矩阵(转载)
- iOS 申请开发者账号-总结
- Openwrt编译:root.squashfs-64k is too big (Max=6488064 , Current=xxxx)
- SaaSBase:英诺森ProcessGo是什么?
- ET服务器框架学习笔记(十)
- colmap源码解析
- canvas函数作图demo
- MATLAB与STK互联40:仿真案例7—近地圆轨道卫星的抵近操作及相对轨迹显示设置(无互联,手动设置)
- Ubuntu“tree”安装失败
- 别被骗了,try-catch语句真的会影响性能吗?