4.8.17kerne make modules没有cfbcopyarea.ko等.ko文件,只有s3c2410fb.ko

风筝丶
博客专家认证
2017-06-29 12:37:55
如题,在看韦东山的二期视频,他用的是2.2.26的Kernel,他在把menuconfig里把LCD驱动配置成M后,make modules后会有cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这三个.ko文件出现。然后韦东山用他自己编写的lcd.ko程序,一起insmod,就把lcd驱动起来了。

但是我是4.8.17的Kernel,把lcd驱动配置成M后,make modules后没有那三个.ko文件,但是在drivers/video/fbdev路径下有个s3c2410fb.ko文件.......
我把这个s3c2410fb.ko和韦东山老师编写的lcd.ko一起insmod,lcd是花屏怎么回事啊,求救啊。。。。
输入echo hello > /dev/tty1 也没反应....

这是lcd.c程序:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/init.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/workqueue.h>
#include <linux/wait.h>
#include <linux/platform_device.h>
#include <linux/clk.h>

#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/div64.h>

#include <asm/mach/map.h>
//#include <asm/arch/regs-lcd.h>
//#include <asm/arch/regs-gpio.h>
//#include <asm/arch/fb.h>
#include <mach/fb.h>
#include <linux/clk.h>

static int s3c_lcdfb_setcolreg(unsigned int regno, unsigned int red,
unsigned int green, unsigned int blue,
unsigned int transp, struct fb_info *info);


struct lcd_regs {
unsigned long lcdcon1;
unsigned long lcdcon2;
unsigned long lcdcon3;
unsigned long lcdcon4;
unsigned long lcdcon5;
unsigned long lcdsaddr1;
unsigned long lcdsaddr2;
unsigned long lcdsaddr3;
unsigned long redlut;
unsigned long greenlut;
unsigned long bluelut;
unsigned long reserved[9];
unsigned long dithmode;
unsigned long tpal;
unsigned long lcdintpnd;
unsigned long lcdsrcpnd;
unsigned long lcdintmsk;
unsigned long lpcsel;
};

static struct fb_ops s3c_lcdfb_ops = {
.owner = THIS_MODULE,
.fb_setcolreg = s3c_lcdfb_setcolreg,
.fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
};


static struct fb_info *s3c_lcd;
static volatile unsigned long *gpbcon;
static volatile unsigned long *gpbdat;
static volatile unsigned long *gpccon;
static volatile unsigned long *gpdcon;
static volatile unsigned long *gpgcon;
static volatile struct lcd_regs* lcd_regs;
static u32 pseudo_palette[16];


/* from pxafb.c */
static inline unsigned int chan_to_field(unsigned int chan, struct fb_bitfield *bf)
{
chan &= 0xffff;
chan >>= 16 - bf->length;
return chan << bf->offset;
}


static int s3c_lcdfb_setcolreg(unsigned int regno, unsigned int red,
unsigned int green, unsigned int blue,
unsigned int transp, struct fb_info *info)
{
unsigned int val;

if (regno > 16)
return 1;

/* 用red,green,blue三原色构造出val */
val = chan_to_field(red, &info->var.red);
val |= chan_to_field(green, &info->var.green);
val |= chan_to_field(blue, &info->var.blue);

//((u32 *)(info->pseudo_palette))[regno] = val;
pseudo_palette[regno] = val;
return 0;
}

static int lcd_init(void)
{
struct clk *clk;/*////*/
/* 1. 分配一个fb_info */
s3c_lcd = framebuffer_alloc(0, NULL);

clk = clk_get(NULL, "lcd");
//clk_enable(clk);
if (IS_ERR(clk)) {
printk( "failed to get lcd clock source\n");
}
clk_prepare_enable(clk);
printk("got and enabled clock\n");

usleep_range(1000, 1100);

/* 2. 设置 */
/* 2.1 设置固定的参数 */
strcpy(s3c_lcd->fix.id, "mylcd");
s3c_lcd->fix.smem_len = 240*320*16/8;
s3c_lcd->fix.type = FB_TYPE_PACKED_PIXELS;
s3c_lcd->fix.visual = FB_VISUAL_TRUECOLOR; /* TFT */
s3c_lcd->fix.line_length = 240*2;

/* 2.2 设置可变的参数 */
s3c_lcd->var.xres = 240;
s3c_lcd->var.yres = 320;
s3c_lcd->var.xres_virtual = 240;
s3c_lcd->var.yres_virtual = 320;
s3c_lcd->var.bits_per_pixel = 16;

/* RGB:565 */
s3c_lcd->var.red.offset = 11;
s3c_lcd->var.red.length = 5;

s3c_lcd->var.green.offset = 5;
s3c_lcd->var.green.length = 6;

s3c_lcd->var.blue.offset = 0;
s3c_lcd->var.blue.length = 5;

s3c_lcd->var.activate = FB_ACTIVATE_NOW;


/* 2.3 设置操作函数 */
s3c_lcd->fbops = &s3c_lcdfb_ops;

/* 2.4 其他的设置 */
s3c_lcd->pseudo_palette = pseudo_palette;
//s3c_lcd->screen_base = ; /* 显存的虚拟地址 */
s3c_lcd->screen_size = 240*324*16/8;

/* 3. 硬件相关的操作 */
/* 3.1 配置GPIO用于LCD */
gpbcon = ioremap(0x56000010, 8);
gpbdat = gpbcon+1;
gpccon = ioremap(0x56000020, 4);
gpdcon = ioremap(0x56000030, 4);
gpgcon = ioremap(0x56000060, 4);

*gpccon = 0xaaaaaaaa; /* GPIO管脚用于VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND */
*gpdcon = 0xaaaaaaaa; /* GPIO管脚用于VD[23:8] */

*gpbcon &= ~(3); /* GPB0设置为输出引脚 */
*gpbcon |= 1;
*gpbdat &= ~1; /* 输出低电平 */

*gpgcon |= (3<<8); /* GPG4用作LCD_PWREN */

/* 3.2 根据LCD手册设置LCD控制器, 比如VCLK的频率等 */
lcd_regs = ioremap(0x4D000000, sizeof(struct lcd_regs));

/* bit[17:8]: VCLK = HCLK / [(CLKVAL+1) x 2], LCD手册P14
* 10MHz(100ns) = 100MHz / [(CLKVAL+1) x 2]
* CLKVAL = 4
* bit[6:5]: 0b11, TFT LCD
* bit[4:1]: 0b1100, 16 bpp for TFT
* bit[0] : 0 = Disable the video output and the LCD control signal.
*/
lcd_regs->lcdcon1 = (4<<8) | (3<<5) | (0x0c<<1);

#if 1
/* 垂直方向的时间参数
* bit[31:24]: VBPD, VSYNC之后再过多长时间才能发出第1行数据
* LCD手册 T0-T2-T1=4
* VBPD=3
* bit[23:14]: 多少行, 320, 所以LINEVAL=320-1=319
* bit[13:6] : VFPD, 发出最后一行数据之后,再过多长时间才发出VSYNC
* LCD手册T2-T5=322-320=2, 所以VFPD=2-1=1
* bit[5:0] : VSPW, VSYNC信号的脉冲宽度, LCD手册T1=1, 所以VSPW=1-1=0
*/
lcd_regs->lcdcon2 = (3<<24) | (319<<14) | (1<<6) | (0<<0);


/* 水平方向的时间参数
* bit[25:19]: HBPD, VSYNC之后再过多长时间才能发出第1行数据
* LCD手册 T6-T7-T8=17
* HBPD=16
* bit[18:8]: 多少列, 240, 所以HOZVAL=240-1=239
* bit[7:0] : HFPD, 发出最后一行里最后一个象素数据之后,再过多长时间才发出HSYNC
* LCD手册T8-T11=251-240=11, 所以HFPD=11-1=10
*/
lcd_regs->lcdcon3 = (16<<19) | (239<<8) | (10<<0);

/* 水平方向的同步信号
* bit[7:0] : HSPW, HSYNC信号的脉冲宽度, LCD手册T7=5, 所以HSPW=5-1=4
*/
lcd_regs->lcdcon4 = 4;

#else
lcd_regs->lcdcon2 = S3C2410_LCDCON2_VBPD(5) | \
S3C2410_LCDCON2_LINEVAL(319) | \
S3C2410_LCDCON2_VFPD(3) | \
S3C2410_LCDCON2_VSPW(1);

lcd_regs->lcdcon3 = S3C2410_LCDCON3_HBPD(10) | \
S3C2410_LCDCON3_HOZVAL(239) | \
S3C2410_LCDCON3_HFPD(1);

lcd_regs->lcdcon4 = S3C2410_LCDCON4_MVAL(13) | \
S3C2410_LCDCON4_HSPW(0);

#endif
/* 信号的极性
* bit[11]: 1=565 format
* bit[10]: 0 = The video data is fetched at VCLK falling edge
* bit[9] : 1 = HSYNC信号要反转,即低电平有效
* bit[8] : 1 = VSYNC信号要反转,即低电平有效
* bit[6] : 0 = VDEN不用反转
* bit[3] : 0 = PWREN输出0
* bit[1] : 0 = BSWP
* bit[0] : 1 = HWSWP 2440手册P413
*/
lcd_regs->lcdcon5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (1<<0);

/* 3.3 分配显存(framebuffer), 并把地址告诉LCD控制器 */
s3c_lcd->screen_base = dma_alloc_writecombine(NULL, s3c_lcd->fix.smem_len, &s3c_lcd->fix.smem_start, GFP_KERNEL);

lcd_regs->lcdsaddr1 = (s3c_lcd->fix.smem_start >> 1) & ~(3<<30);
lcd_regs->lcdsaddr2 = ((s3c_lcd->fix.smem_start + s3c_lcd->fix.smem_len) >> 1) & 0x1fffff;
lcd_regs->lcdsaddr3 = (240*16/16); /* 一行的长度(单位: 2字节) */

//s3c_lcd->fix.smem_start = xxx; /* 显存的物理地址 */
/* 启动LCD */
lcd_regs->lcdcon1 |= (1<<0); /* 使能LCD控制器 */
lcd_regs->lcdcon5 |= (1<<3); /* 使能LCD本身 */
*gpbdat |= 1; /* 输出高电平, 使能背光 */

/* 4. 注册 */
register_framebuffer(s3c_lcd);

return 0;
}

static void lcd_exit(void)
{
unregister_framebuffer(s3c_lcd);
lcd_regs->lcdcon1 &= ~(1<<0); /* 关闭LCD本身 */
*gpbdat &= ~1; /* 关闭背光 */
dma_free_writecombine(NULL, s3c_lcd->fix.smem_len, s3c_lcd->screen_base, s3c_lcd->fix.smem_start);
iounmap(lcd_regs);
iounmap(gpbcon);
iounmap(gpccon);
iounmap(gpdcon);
iounmap(gpgcon);
framebuffer_release(s3c_lcd);
}

module_init(lcd_init);
module_exit(lcd_exit);

MODULE_LICENSE("GPL");
...全文
869 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
风筝丶 2017-07-12
  • 打赏
  • 举报
回复
引用 22 楼 jklinux 的回复:
你这屏分辨率才320*240吗?感觉挺大. 也有点像xres, yres搞反了的状况
好了,记录再此了,此贴终结,谢谢老哥了 http://blog.csdn.net/guet_kite/article/details/75013609
风筝丶 2017-06-30
  • 打赏
  • 举报
回复
引用 22 楼 jklinux 的回复:
你这屏分辨率才320*240吗?感觉挺大. 也有点像xres, yres搞反了的状况
过两天有空再把他总结好记blog上再分享出来,期末复习去了
风筝丶 2017-06-30
  • 打赏
  • 举报
回复
引用 22 楼 jklinux 的回复:
你这屏分辨率才320*240吗?感觉挺大. 也有点像xres, yres搞反了的状况
哇,厉害,我搞好了,确实是x,y搞反了,还有一些参数不正确的原因,感谢指导
jklinux 2017-06-30
  • 打赏
  • 举报
回复
你这屏分辨率才320*240吗?感觉挺大. 也有点像xres, yres搞反了的状况
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 20 楼 Guet_Kite 的回复:
引用 19 楼 jklinux 的回复:
[quote=引用 18 楼 Guet_Kite 的回复:] [quote=引用 17 楼 jklinux 的回复:] [quote=引用 16 楼 Guet_Kite 的回复:] [quote=引用 15 楼 jklinux 的回复:] [quote=引用 14 楼 Guet_Kite 的回复:] [quote=引用 13 楼 jklinux 的回复:] [quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....[/quote] 不用管那三个东西了,肯定不是那三个东西引起花屏的。自己写应用程序刷下单色试下 还有在加载驱动前,是否有/dev/fb文件[/quote]我觉得说是白屏比较准确。我之前把lcd驱动配置为M,生成一个s3c2410fb.ko文件,然后dev下没有fb文件,insmod lcd.ko,屏幕被点亮,白白一片,dev出现fb0文件,然后insmod s3c2410fb.ko,屏幕还是没反应,dev出现fb1文件。然后重启开发板,先insmod s3c2410fb.ko,屏幕没反应,在insmod lcd.ko,屏幕就是花屏了。。。。 然后我在内核里把lcd驱动选上,编进内核,烧好Kernel后,insmod s3c2410fb.ko,就提示已经注册了。按道理,这些lcd的参数应该是正确的啊,这个就是韦东山老师的例程啊,只不过Kernel不一样版本而已[/quote] 建议先把内核里自带的驱动跑起来的先,那个是平台驱动来的。估计需要你根据屏的参数来修改平台设备。 在工作中一般都是用内核里的驱动的。不会通过配寄存器的方式.[/quote]老哥,我的lcd屏幕有输出了,但是只有半边输出啊,半边花屏,而且字在闪,还模糊:[/quote]字在左上角,好隐蔽的
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 19 楼 jklinux 的回复:
引用 18 楼 Guet_Kite 的回复:
[quote=引用 17 楼 jklinux 的回复:]
[quote=引用 16 楼 Guet_Kite 的回复:]
[quote=引用 15 楼 jklinux 的回复:]
[quote=引用 14 楼 Guet_Kite 的回复:]
[quote=引用 13 楼 jklinux 的回复:]
[quote=引用 12 楼 Guet_Kite 的回复:]
[quote=引用 11 楼 jklinux 的回复:]
=y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?


可以这样,但最好是找到相应的配置项来选M.

而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。

[/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote]

那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。
你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....[/quote]

不用管那三个东西了,肯定不是那三个东西引起花屏的。自己写应用程序刷下单色试下
还有在加载驱动前,是否有/dev/fb文件[/quote]我觉得说是白屏比较准确。我之前把lcd驱动配置为M,生成一个s3c2410fb.ko文件,然后dev下没有fb文件,insmod lcd.ko,屏幕被点亮,白白一片,dev出现fb0文件,然后insmod s3c2410fb.ko,屏幕还是没反应,dev出现fb1文件。然后重启开发板,先insmod s3c2410fb.ko,屏幕没反应,在insmod lcd.ko,屏幕就是花屏了。。。。
然后我在内核里把lcd驱动选上,编进内核,烧好Kernel后,insmod s3c2410fb.ko,就提示已经注册了。按道理,这些lcd的参数应该是正确的啊,这个就是韦东山老师的例程啊,只不过Kernel不一样版本而已[/quote]

建议先把内核里自带的驱动跑起来的先,那个是平台驱动来的。估计需要你根据屏的参数来修改平台设备。
在工作中一般都是用内核里的驱动的。不会通过配寄存器的方式.[/quote]老哥,我的lcd屏幕有输出了,但是只有半边输出啊,半边花屏,而且字在闪,还模糊:
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 18 楼 Guet_Kite 的回复:
引用 17 楼 jklinux 的回复:
[quote=引用 16 楼 Guet_Kite 的回复:] [quote=引用 15 楼 jklinux 的回复:] [quote=引用 14 楼 Guet_Kite 的回复:] [quote=引用 13 楼 jklinux 的回复:] [quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....[/quote] 不用管那三个东西了,肯定不是那三个东西引起花屏的。自己写应用程序刷下单色试下 还有在加载驱动前,是否有/dev/fb文件[/quote]我觉得说是白屏比较准确。我之前把lcd驱动配置为M,生成一个s3c2410fb.ko文件,然后dev下没有fb文件,insmod lcd.ko,屏幕被点亮,白白一片,dev出现fb0文件,然后insmod s3c2410fb.ko,屏幕还是没反应,dev出现fb1文件。然后重启开发板,先insmod s3c2410fb.ko,屏幕没反应,在insmod lcd.ko,屏幕就是花屏了。。。。 然后我在内核里把lcd驱动选上,编进内核,烧好Kernel后,insmod s3c2410fb.ko,就提示已经注册了。按道理,这些lcd的参数应该是正确的啊,这个就是韦东山老师的例程啊,只不过Kernel不一样版本而已[/quote] 建议先把内核里自带的驱动跑起来的先,那个是平台驱动来的。估计需要你根据屏的参数来修改平台设备。 在工作中一般都是用内核里的驱动的。不会通过配寄存器的方式.
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 17 楼 jklinux 的回复:
引用 16 楼 Guet_Kite 的回复:
[quote=引用 15 楼 jklinux 的回复:] [quote=引用 14 楼 Guet_Kite 的回复:] [quote=引用 13 楼 jklinux 的回复:] [quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....[/quote] 不用管那三个东西了,肯定不是那三个东西引起花屏的。自己写应用程序刷下单色试下 还有在加载驱动前,是否有/dev/fb文件[/quote]我觉得说是白屏比较准确。我之前把lcd驱动配置为M,生成一个s3c2410fb.ko文件,然后dev下没有fb文件,insmod lcd.ko,屏幕被点亮,白白一片,dev出现fb0文件,然后insmod s3c2410fb.ko,屏幕还是没反应,dev出现fb1文件。然后重启开发板,先insmod s3c2410fb.ko,屏幕没反应,在insmod lcd.ko,屏幕就是花屏了。。。。 然后我在内核里把lcd驱动选上,编进内核,烧好Kernel后,insmod s3c2410fb.ko,就提示已经注册了。按道理,这些lcd的参数应该是正确的啊,这个就是韦东山老师的例程啊,只不过Kernel不一样版本而已
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 16 楼 Guet_Kite 的回复:
引用 15 楼 jklinux 的回复:
[quote=引用 14 楼 Guet_Kite 的回复:] [quote=引用 13 楼 jklinux 的回复:] [quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....[/quote] 不用管那三个东西了,肯定不是那三个东西引起花屏的。自己写应用程序刷下单色试下 还有在加载驱动前,是否有/dev/fb文件
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 15 楼 jklinux 的回复:
引用 14 楼 Guet_Kite 的回复:
[quote=引用 13 楼 jklinux 的回复:] [quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了[/quote]我也发现了....把他编译成模块对我而言并没有什么用啊。。可是我lcd驱动不起来啊,为什么韦东山的可以啊,都是一样的板子,只是Kernel版本不一样而言...而且我把那三个东西在.config修改成=m后,make uImage后发现,他又是=y了....
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 14 楼 Guet_Kite 的回复:
引用 13 楼 jklinux 的回复:
[quote=引用 12 楼 Guet_Kite 的回复:] [quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?[/quote] 那几个模块又不是依赖s3c2410的模块,你选s3c2410模块对那几个模块完全没影响。 你硬要编成模块,就自己修改Kconfig了. 查看的方法我前面说了
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 13 楼 jklinux 的回复:
引用 12 楼 Guet_Kite 的回复:
[quote=引用 11 楼 jklinux 的回复:] =y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。 [/quote]按道理,应该就是我之前截图那里是配置成M就行了啊,那能从这个.config里看出是在配置的那里要改成M吗?或者有什么办法吗?
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 12 楼 Guet_Kite 的回复:
引用 11 楼 jklinux 的回复:
=y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
可以这样,但最好是找到相应的配置项来选M. 而且不管是编成ko, 还是编进内核里去,最终还不是调用它的功能吗?不管是哪种方式,功能也是一样的。
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 11 楼 jklinux 的回复:
=y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
那我手动修改成=m吗?
jklinux 2017-06-29
  • 打赏
  • 举报
回复
=y就是表示编进内核镜像的意思啊, 这样没有那些ko文件就是对的了
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 8 楼 jklinux 的回复:
[quote=引用 7 楼 Guet_Kite 的回复:]
[quote=引用 4 楼 jklinux 的回复:]
[quote=引用 3 楼 Guet_Kite 的回复:]
[quote=引用 1 楼 jklinux 的回复:]
你的模块可以加载成功,则表示cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这几个模块的代码应是编进内核里。
你可以cat /proc/kallsymbols里查下 cfb_fillrect, cfb_copyarea, cfb_imageblit这个几函数应是存在了.
Device Drivers->Graphics support->Frame buffer Devices-><M>S3C2410 LCD framebuffer support[/quote]

你的驱动模块选M, 是你的驱动模块依赖别人。不代表别人也要选M的哦[/quote]老哥,别放弃我啊我觉得我还能再抢救一下[/quote]

你查看内核源码目录下的.config里的CONFIG_FB_CFB_FILLRECT, CONFIG_FB_CFB_COPYAREA, CONFIG_FB_CFB_IMAGEBLIT[/quote]有的:
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 8 楼 jklinux 的回复:
[quote=引用 7 楼 Guet_Kite 的回复:] [quote=引用 4 楼 jklinux 的回复:] [quote=引用 3 楼 Guet_Kite 的回复:] [quote=引用 1 楼 jklinux 的回复:] 你的模块可以加载成功,则表示cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这几个模块的代码应是编进内核里。 你可以cat /proc/kallsymbols里查下 cfb_fillrect, cfb_copyarea, cfb_imageblit这个几函数应是存在了.
Device Drivers->Graphics support->Frame buffer Devices-><M>S3C2410 LCD framebuffer support[/quote] 你的驱动模块选M, 是你的驱动模块依赖别人。不代表别人也要选M的哦[/quote]老哥,别放弃我啊我觉得我还能再抢救一下[/quote] 你查看内核源码目录下的.config里的CONFIG_FB_CFB_FILLRECT, CONFIG_FB_CFB_COPYAREA, CONFIG_FB_CFB_IMAGEBLIT[/quote] 然后你再make menuconfig 出界面后, 按"/"输入CONFIG_FB_CFB_COPYAREA查看是由谁选上,依赖谁
jklinux 2017-06-29
  • 打赏
  • 举报
回复
引用 7 楼 Guet_Kite 的回复:
[quote=引用 4 楼 jklinux 的回复:] [quote=引用 3 楼 Guet_Kite 的回复:] [quote=引用 1 楼 jklinux 的回复:] 你的模块可以加载成功,则表示cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这几个模块的代码应是编进内核里。 你可以cat /proc/kallsymbols里查下 cfb_fillrect, cfb_copyarea, cfb_imageblit这个几函数应是存在了.
Device Drivers->Graphics support->Frame buffer Devices-><M>S3C2410 LCD framebuffer support[/quote] 你的驱动模块选M, 是你的驱动模块依赖别人。不代表别人也要选M的哦[/quote]老哥,别放弃我啊我觉得我还能再抢救一下[/quote] 你查看内核源码目录下的.config里的CONFIG_FB_CFB_FILLRECT, CONFIG_FB_CFB_COPYAREA, CONFIG_FB_CFB_IMAGEBLIT
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 4 楼 jklinux 的回复:
[quote=引用 3 楼 Guet_Kite 的回复:] [quote=引用 1 楼 jklinux 的回复:] 你的模块可以加载成功,则表示cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这几个模块的代码应是编进内核里。 你可以cat /proc/kallsymbols里查下 cfb_fillrect, cfb_copyarea, cfb_imageblit这个几函数应是存在了.
Device Drivers->Graphics support->Frame buffer Devices-><M>S3C2410 LCD framebuffer support[/quote] 你的驱动模块选M, 是你的驱动模块依赖别人。不代表别人也要选M的哦[/quote]老哥,别放弃我啊我觉得我还能再抢救一下
风筝丶 2017-06-29
  • 打赏
  • 举报
回复
引用 4 楼 jklinux 的回复:
[quote=引用 3 楼 Guet_Kite 的回复:] [quote=引用 1 楼 jklinux 的回复:] 你的模块可以加载成功,则表示cfbcopyarea.ko、cfbfillrect.ko和cfbimageblit.ko这几个模块的代码应是编进内核里。 你可以cat /proc/kallsymbols里查下 cfb_fillrect, cfb_copyarea, cfb_imageblit这个几函数应是存在了.
Device Drivers->Graphics support->Frame buffer Devices-><M>S3C2410 LCD framebuffer support[/quote] 你的驱动模块选M, 是你的驱动模块依赖别人。不代表别人也要选M的哦[/quote]额...什么意思,我看韦东山老师的也是这么做啊,把lcd驱动配置成M,然后make modules就有那三个.ko文件了
加载更多回复(5)

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧