虚拟地址赋值给参数1, 其C定义的含义为:#ifdefCONFIG_DEBUG_LLexternvoiddebug_ll_addr(unsignedlong*paddr, unsignedlong*vaddr);externvoiddebug_ll_io_init(void);#elsestaticinlinevoiddebug_ll_io_init(void) {}#endif可以理解debug_ll_addr()等效于addruart(), 那谁用这个功能呢?
首先说说好处,为什幺打开Kernel low-level debugging functions 功能。 打开这个宏定义后,会在head.s函数的__create_page_tables建立一部分io映射,具体代码如下: #ifdef CONFIG_DEBUG_LL ldrr7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags /* * Map in IO space for serial debugging. * This allows de...
在这个选项中发现还有个依赖的子菜单“Kernel low-level debugging port”, 里面有一堆宏定义如AT91_DEBUG_LL_DBGU0、AT91_DEBUG_LL_DBGU1、 这几个子选项用来干嘛呢? 一是代码文件debug.S(obj-$(CONFIG_DEBUG_LL) += debug.o) 会根据子宏定义走不同的分支; 二是这个代码里会引用宏CONFIG_DEBUG_LL_INCL...