CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 8973|回复: 9

交叉编译在A80板子上

[复制链接]
发表于 2015-5-27 18:26:21 | 显示全部楼层 |阅读模式
我想在A80板子上进行编译,然后
  1. root@cubieboard4:/home/master/linux-3.4# sudo apt-get install  gcc-arm-linux-gnueabi
  2. Reading package lists... Done
  3. Building dependency tree      
  4. Reading state information... Done
  5. E: Unable to locate package gcc-arm-linux-gnueabi
复制代码
下好源码,可是用apt-get-install的时候说, 我用的是lubuntu.3的版本~~~这是什么原因

回复

使用道具 举报

发表于 2015-5-27 19:07:17 | 显示全部楼层
sudo apt-get install  gcc
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-27 19:24:04 | 显示全部楼层
@allen 发表于 2015-5-27 19:07
sudo apt-get install  gcc

gcc版本是4.8影响不,现在编译内核时出错率
  1. arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘--min_array_alignment=4’
  2. arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘--no_unaligned_access’
  3. make[3]: *** [arch/arm/mach-sunxi/pm/standby/common.o] Error 1
  4. make[2]: *** [arch/arm/mach-sunxi/pm/standby/standby.code] Error 2
  5. make[1]: *** [arch/arm/mach-sunxi/pm] Error 2
  6. make: *** [arch/arm/mach-sunxi] Error 2
复制代码
在自己的ubuntu12.04上是没问题的,还有很多都是无法通过apt-get install 下载
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-27 19:24:22 | 显示全部楼层
@allen 发表于 2015-5-27 19:07
sudo apt-get install  gcc

gcc版本是4.8影响不,现在编译内核时出错率
  1. arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘--min_array_alignment=4’
  2. arm-linux-gnueabihf-gcc: error: unrecognized command line option ‘--no_unaligned_access’
  3. make[3]: *** [arch/arm/mach-sunxi/pm/standby/common.o] Error 1
  4. make[2]: *** [arch/arm/mach-sunxi/pm/standby/standby.code] Error 2
  5. make[1]: *** [arch/arm/mach-sunxi/pm] Error 2
  6. make: *** [arch/arm/mach-sunxi] Error 2
复制代码
在自己的ubuntu12.04上是没问题的,还有很多都是无法通过apt-get install 下载
回复 支持 反对

使用道具 举报

发表于 2015-5-27 19:27:42 | 显示全部楼层
不要在板子上编译内核,太多问题要解决了,各种包没有

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-27 19:51:43 | 显示全部楼层
@allen 发表于 2015-5-27 19:27
不要在板子上编译内核,太多问题要解决了,各种包没有

那这样子编译驱动加载调试不是很麻烦。。。有解决方法么
回复 支持 反对

使用道具 举报

发表于 2015-5-28 09:40:49 | 显示全部楼层
wanzok 发表于 2015-5-27 19:51
那这样子编译驱动加载调试不是很麻烦。。。有解决方法么

可以编译单个驱动模块。  可以参照附件一个简单的Makefile。

注意对应的内核是要编译过的。并且要把内核也替换了。   

Makefile.tar.gz

355 Bytes, 下载次数: 3, 下载积分: 金钱 -1

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-28 16:58:32 | 显示全部楼层
sunbeyond 发表于 2015-5-28 09:40
可以编译单个驱动模块。  可以参照附件一个简单的Makefile。

注意对应的内核是要编译过的。并且要把内核 ...

我写了个驱动程序,又写了个测试程序,可是没有出现错误,可是测试程序执行时无法执行驱动里面的内容,是哪里的问题
  1. #include <linux/module.h>
  2. #include <linux/kernel.h>
  3. #include <linux/errno.h>
  4. #include <linux/fs.h>
  5. #include <linux/init.h>
  6. #include <linux/delay.h>
  7. #include <linux/device.h>
  8. #include <asm/uaccess.h>
  9. #include <asm/irq.h>
  10. #include <asm/io.h>

  11. #if 1
  12. #define GPIO_BASE   0X06000800
  13. #define GPH_CFG0   (GPIO_BASE+0XFC)   //PH CFG0~~the port of led is PH06
  14. #define GPH06_CFG       (1<<24)              //閰嶇疆璇ョ鍙d负杈撳嚭妯″紡锝炲嵆led绔彛鏄緭鍑篜H06
  15. #define GPH_DATA   (GPIO_BASE+0X10C)  //offset about the gpio_data register
  16. #endif

  17. static struct class *leddrv_class;

  18. /******cfg0閲岄潰绔彛鍖呮嫭PH06**********/
  19. static volatile unsigned int *gpioh_cfg0 ;
  20. static volatile unsigned int *gpioh_data ;


  21. static int led_drv_open(struct inode *inode,struct file *file)
  22. {

  23.         /*灏哖H06_CFG浣嶆竻闆?/
  24.         *gpioh_cfg0 &= ~(GPH06_CFG);
  25.         /*灏哖H06_CFG浣嶇疆1锛屼娇鍏朵负杈撳嚭妯″紡*/
  26.         *gpioh_cfg0 |= GPH06_CFG;


  27.         /****鍦ㄥ唴鏍搁噷鎵撳嵃瑕佺敤鍑芥暟printk****/
  28.         printk("led openi\n");
  29.         return 0;

  30. }
  31. static ssize_t led_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
  32. {

  33.         int val;
  34.         /**鍐呮牳绌洪棿鍜岀敤鎴风┖闂寸浉浜掔嫭绔嬶紝涓よ€呬箣闂存暟鎹氦鎹㈠嚱鏁?*/
  35.         copy_from_user(&val,buf,count);
  36.         if(val == 1)
  37.         {
  38.                 /**缃?锛岀浉褰撲簬pin_write鍐?**/
  39.                 *gpioh_data &= ~(0x01<<6);        //鍐橮H06涓?
  40.         }
  41.         else
  42.         {
  43.                 /**缃?锛岀浉褰撲簬pin_write鍐?**/
  44.                 *gpioh_data |= (0x01<<6);       
  45.         }
  46.         return 0;

  47. }
  48. static struct file_operations led_drv_fops = {

  49.         .owner = THIS_MODULE,                //杩欐槸涓€涓畯锛屾帹鍚戠紪璇戞ā鍧楁椂鑷姩鍒涘缓褰揰_this_module鍙橀噺
  50.         .open  = led_drv_open,                //鍑芥暟鎸囬拡璧嬪€?        .write = led_drv_write,                //鍑芥暟鎸囬拡璧嬪€?};
  51. /****涓昏澶囧彉閲?**/
  52. int major;
  53. /******褰撴墽琛宨nsmod鍛戒护褰撴椂鍊欒繖涓嚱鏁颁細琚墽琛岋紝鍗冲垵濮嬪寲鍑芥暟*****/
  54. static int led_drv_init(void)
  55. {        pr_err("leds_init by wanzokyoung\n");

  56.         major = register_chrdev(0,"wanzokyoung",&led_drv_fops);

  57.         leddrv_class = class_create(THIS_MODULE,"wanzokyoung");
  58.         device_create(leddrv_class,NULL,MKDEV(major,0),NULL,"wanzokyoung");
  59.         gpioh_cfg0 = (volatile unsigned int *)ioremap(GPH_CFG0,20); //20琛ㄧず20byte锛?涓?2锛燂紵锛燂紵铏氭嫙鍦板潃鏄犲皠
  60.         gpioh_data = (volatile unsigned int *)ioremap(GPH_DATA,20);
  61.         return 0;

  62. }

  63. /**鎵цrmmod鐨勬椂鍊欎細琚墽琛岋綖鍗虫帹鍑篸rv**/
  64. static void led_drv_exit(void)
  65. {
  66.         /*娉ㄩ攢led璁惧*/
  67.         unregister_chrdev(major,"led"); //鍗歌浇
  68.         /*閲婃斁鍦板潃*/
  69.         iounmap(gpioh_cfg0);
  70.         /*閿€姣佸垱寤哄綋璁惧鑺傜偣*/
  71.         device_destroy(leddrv_class,MKDEV(major,0));
  72.         class_destroy(leddrv_class);
  73.         printk(KERN_ALERT"leds unregister\n");
  74. }
  75. /*linux璁惧椹卞姩褰撲袱涓慨楗扮*/
  76. module_init(led_drv_init);
  77. module_exit(led_drv_exit);

  78. /*閬靛惊GPL鍗忚*/
  79. MODULE_AUTHOR("by wanzokyoung");
  80. MODULE_LICENSE("GPL");
复制代码
上面是驱动程序,下面是测试程序
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <sys/stat.h>
  4. #include <sys/types.h>

  5. int main(int argc,char **argv)
  6. {
  7.         int fd;
  8.         int val = 1;
  9.         fd = open("/dev/xxx",O_RDWR);
  10.         if(fd<0)
  11.            printf("can't open!\n");
  12.         else
  13.         {
  14.          write(fd,&val,4);
  15.          printf("done\n");
  16.         }
  17.         return 0;
  18. }
复制代码

回复 支持 反对

使用道具 举报

发表于 2015-6-1 11:32:19 | 显示全部楼层
wanzok 发表于 2015-5-28 16:58
我写了个驱动程序,又写了个测试程序,可是没有出现错误,可是测试程序执行时无法执行驱动里面的内容,是 ...

你的设备节点这么写肯定出不来:    fd = open("/dev/xxx",O_RDWR);  

改一下: “/dev/wanzokyoung ”
出了问题多加打印调试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-1 14:49:56 | 显示全部楼层
sunbeyond 发表于 2015-6-1 11:32
你的设备节点这么写肯定出不来:    fd = open("/dev/xxx",O_RDWR);  

改一下: “/dev/wanzokyoung ”

我试了下不行,应为设备节点的话,我是通过mknod创建的,把设备号改成了驱动里的设备号,但是驱动里面里信息没法打印出来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-11-26 11:44 , Processed in 0.029589 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部