qt 컴파일 하는데 있어서 질문 드립니다.
extern unsigned long system_fclk;
extern unsigned long system_hclk;
extern unsigned long system_pclk;
드라이버 소스에 이런 식으로 커널 소스를 참고 해서 작업한게 있습니다.
저는 이부분을 가져다가 qt 소스에서 작업을 하고 싶은데 어떤식으로 해야될지 몰라서...ㅠㅠ
#include linux/module.h>
#include linux/kernel.h>
#include linux/version.h>
#include linux/init.h>
#include linux/fs.h>
#include linux/sched.h>
#include linux/interrupt.h>
#include asm/uaccess.h>
#include asm/ioctl.h>
#include asm/unistd.h>
#include inux/ioport.h>
#include asm/irq.h>
#include asm/io.h>
#include sm/arch/irqs.h>
#include asm/arch/gpio.h>
#include asm/plat-s3c24xx/clock.h>
#include asm/plat-s3c/regs-adc.h>
#include asm/plat-s3c/regs-timer.h>
이런식으로 기존 드라이버에서 사용하던 소스를 전부 가져다가 쓰려고 해도....
qt Makefile에서 kerner include 디렉터리를 어떻게 추가 해야 될지도 모르겠고.해서 도움을 청합니다.
우선은 저도 지금 하고 있는데 생각처럼 되지 않고 있네요..조은 방법있으시면 알려주세요.
system clk를 가져다가 쓸부분이 있는데 어떻게 써야될지 몰라서....
qmake를 사용하신다면...
qmake를 사용하신다면 project파일(.pro)안에 INCLUDEPATH로 헤더파일이 있는 곳을 지정하시면 됩니다.
INCLUDEPATH = /root/include /root/include/asm /root/include/linux
-------------------------------------
서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com
-------------------------------------
서영진 입니다.
Homepage : http://valentis.pe.kr
blog : http://www.lifeholic.com
헤더 파일은 알려주신대로 처리 했습니다.
#include linux/kernel.h>
#include linux/version.h>
#include linux/init.h>
#include linux/fs.h>
#include linux/sched.h>
#include asm/ioctl.h>
#include asm/unistd.h>
#include asm/irq.h>
#include asm/io.h>
#include asm/arch/irqs.h>
#include asm/plat-s3c24xx/clock.h>
#include asm/plat-s3c/regs-adc.h>
#include asm/plat-s3c/regs-timer.h>
extern unsigned long system_fclk;
extern unsigned long system_hclk;
extern unsigned long system_pclk;
static float pclk_val;
static float clk_val;
clock.h 관련 소스를 보니 clock.c에 시스템 클럭관련 부분이 있더군요...
결정적으로 clock.h 관련부분에서 문제가 생기네요...ㅠㅠ
clock.h:14:error: field 'list' has incomplete type
컴파일 에러가 뜨네요.
struct clk {
struct list_head list;
struct module *owner;
struct clk *parent;
const char *name;
int id;
int usage;
unsigned long rate;
unsigned long ctrlbit;
int (*enable)(struct clk *, int enable);
int (*set_rate)(struct clk *c, unsigned long rate);
unsigned long (*get_rate)(struct clk *c);
unsigned long (*round_rate)(struct clk *c, unsigned long rate);
int (*set_parent)(struct clk *c, struct clk *parent);
};
에러나는곳은 struct list_head list
부분인데 왜 에러가 나는지 모르겠습니다.
컴파일시 문제가 되는 몇개의 헤더파일을 삭제 했는데..그부분때문인것도 같고....
system_clk만 쓸수 있으면 되는데 여러군데서 문제가 생기네요...
조언좀 부탁드립니다.
질문 추가합니다.
clock.c 파일부분에서 시스템 클럭에 관해 패치된 부분입니다. 여기있는 시스템 클럭만 가져다 쓰면 되는데...ㅠㅠ
/* initalise all the clocks */
int __init s3c24xx_setup_clocks(unsigned long xtal,
unsigned long fclk,
unsigned long hclk,
unsigned long pclk)
{
printk(KERN_INFO "S3C24XX Clocks, (c) 2004 Simtec Electronics\n");
/* initialise the main system clocks */
clk_xtal.rate = xtal;
clk_upll.rate = s3c2410_get_pll(__raw_readl(S3C2410_UPLLCON), xtal);
#if defined(CONFIG_MACH_rs2410)
system_fclk = fclk;
system_hclk = hclk;
system_pclk = pclk;
#endif
clk_mpll.rate = fclk;
clk_h.rate = hclk;
clk_p.rate = pclk;
clk_f.rate = fclk;
/* assume uart clocks are correctly setup */
/* register our clocks */
if (s3c24xx_register_clock(&clk_xtal) < 0)
printk(KERN_ERR "failed to register master xtal\n");
if (s3c24xx_register_clock(&clk_mpll) < 0)
printk(KERN_ERR "failed to register mpll clock\n");
if (s3c24xx_register_clock(&clk_upll) < 0)
printk(KERN_ERR "failed to register upll clock\n");
if (s3c24xx_register_clock(&clk_f) < 0)
printk(KERN_ERR "failed to register cpu fclk\n");
if (s3c24xx_register_clock(&clk_h) < 0)
printk(KERN_ERR "failed to register cpu hclk\n");
if (s3c24xx_register_clock(&clk_p) < 0)
printk(KERN_ERR "failed to register cpu pclk\n");
return 0;
}
댓글 달기