AM335x Linux调试1--MLO中打印寄存器值

来源:互联网 发布:刚哥哥淘宝店招制作 编辑:程序博客网 时间:2024/05/01 06:11

       今天碰到了个问题,需要在MLO中确认boot模式,但是客户没有JTAG,没仿真器,所以只好在MLO中添加上一些打印显示,这就涉及到一个问题:如何在MLO中查看或者写入寄存器的值,其实很简单,实现案例如下:

Step 1: 找到需要加入打印的文件位置:EZSDK6.0/board-support/u-boot/common/spl/spl.c

Step 2: 在文件的include文件中,需要加入:

#include <asm/io.h>

Step 3: 在board_init_r函数的前端,加入以下语句:

u32 bootmode_steven;
bootmode_steven = readl(0x44e10040);  //reading sysconfig
printf("steven: %d\n", bootmode_steven);


PS:参考一下如果是想写入值:

writel(bootmode_steven, 0x44e10040);

该语句源于gpmc_init函数中的:
writel(0x00000000, &gpmc_cfg->irqstatus);


经过以上三步,就可以打印出你想要的数据了,下面是log信息:

CCCCCCCC
U-Boot SPL 2013.01.01 (Apr 16 2014 - 12:26:02)
steven: 4195201//此处是十进制,转换一下bootmode_steven=0x400381
timed out in wait_for_bb: I2C_STAT=1000
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
OMAP SD/MMC: 0
reading u-boot.img
reading u-boot.img


最后,再附上io.h中的源定义:

arch/arm/include/asm/io.h


#define writeb(v,c)     ({ u8  __v = v; __iowmb(); __arch_putb(__v,c); __v; })

#define writew(v,c)     ({ u16 __v = v; __iowmb(); __arch_putw(__v,c); __v; })
#define writel(v,c)     ({ u32 __v = v; __iowmb(); __arch_putl(__v,c); __v; })

#define readb(c)        ({ u8  __v = __arch_getb(c); __iormb(); __v; })
#define readw(c)        ({ u16 __v = __arch_getw(c); __iormb(); __v; })
#define readl(c)        ({ u32 __v = __arch_getl(c); __iormb(); __v; })

0 0
原创粉丝点击