int lcd_info(int argc, char** argv) { uint32_t id; rt_device_t lcd = rt_device_find("lcd0"); rt_lcd_init(RT_NULL); rt_lcd_control(RT_NULL, RTGRAPHIC_CTRL_GET_INFO, &id); rt_kprintf("lcd controllor:0x%X\r\n", id); rt_kprintf("lcd size:%dx%d\r\n", LCD_X_MAX, LCD_Y_MAX); return RT_EOK; }
void rt_hw_lcd_init(void) { _rt_framebuffer = rt_malloc_align(sizeof(rt_uint16_t) * RT_HW_LCD_HEIGHT * RT_HW_LCD_WIDTH, 32); if (_rt_framebuffer == RT_NULL) return; /* no memory yet */ _lcd_info.bits_per_pixel = LCD_BITS_PER_PIXEL; _lcd_info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; // RTGRAPHIC_PIXEL_FORMAT_ARGB888 _lcd_info.framebuffer = (void *)_rt_framebuffer; _lcd_info.width = RT_HW_LCD_WIDTH; _lcd_info.height = RT_HW_LCD_HEIGHT; /* init device structure */ lcd.type = RT_Device_Class_Graphic; lcd.init = rt_lcd_init; lcd.open = RT_NULL; lcd.close = RT_NULL; lcd.control = rt_lcd_control; lcd.user_data = (void *)&_lcd_info; /* register lcd device to RT-Thread */ rt_device_register(&lcd, "lcd", RT_DEVICE_FLAG_RDWR); rt_lcd_init(&lcd); }