对于S3C2440A的LCD Controller来说,frambuffer驱动把framebuffer的物理地址(fix.smem_start)和长度写入LCDSADDR1/2/3这三个寄存器中(参考drivers/video/s3c2410fb.c中的s3c2410fb_set_lcdaddr()函数),这样硬件自动会将SDRAM中的framebuffer中的数据(由user space的应用程序通过frambuffer驱动的mmap接口把framebuffer映射到应用程序的地址空间中,再将显示数据填入)通过DMA搬到LCD Controller中再从那里送到LCD屏上。
如果你想在内核里用frambuffer的数据,直接memcpy fb_info中的screen_base地址上的数据就可以了。内核中所有的程序都是在同一地址空间的。