【OK210试用体验】GCC交叉编译环境重新安装解决上次LED无法编译的问题 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【OK210试用体验】GCC交叉编译环境重新安装解决上次LED无法编译的问题

374441293 ( 楼主 ) 2015-8-24 23:37:27  只看该作者 倒序浏览
昨天我发了一个求助贴,关于编写LED驱动程序时,编译报错问题。
编译提示:/home/wangxin/arm/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-ld: main.o: No such file: No such file or directory
后来经过反复寻思都没有解决,我就干脆直接先把原来的arm-linux-gcc删除,重新安装飞凌教程安装arm-2009q3.tar.bz2.这个文件在飞凌的实用工具文件下有
安装过程按照,飞凌手册执行,具体流程如下:

添加完路径后,环境变量还没有生效,需要我们在终端里面注册一下环境变量
  1. source /etc/profile
复制代码
接着输入
  1. arm-linux-gcc -v
复制代码

就可以看到如下图的结果,输出arm-linux-gcc的版本号


接着我们开始编译LED驱动程序
  1. #define MP0_4CON  (*(volatile unsigned long *)0xE0200340)
  2. #define MP0_4DAT (*(volatile unsigned long *)0xE0200344)
  3. #define GPD0CON    (*(volatile unsigned long *)0xE02000A0)
  4. #define MP0_4PUD        (*(volatile unsigned long *)0xE0200348)
  5. void clock_init(void);
  6. void putc(char c);
  7. void uart_init(void);
  8. void putout(char * c);
  9. int print(const char *fmt, ...);
  10. static void Delay(int count)
  11. {
  12.     volatile int i, j = 0;
  13.     volatile static int loop = 800000000/10000;
  14.     for(;count > 0;count--)
  15.     for(i=0;i < loop; i++) { j++; }
  16. }
  17. void main(void)
  18. {
  19.     int i;
  20.     GPD0CON &= ~(0xF << 0);//关闭蜂鸣器
  21.     MP0_4CON = (MP0_4CON & ~0xFFFF0000) | 0x11110000; //设置高 4 为管脚为输出方式
  22.     MP0_4PUD=(0x55<<16)&MP0_4PUD;//设置为下拉方式
  23. // clock_init();
  24.   //  uart_init();
  25.   //MP0_4DAT |= 0xF0;
  26.   for( i=4;i<8;i++)//关闭 led
  27.   {
  28.     MP0_4DAT |= ( 1<< i);
  29.     Delay(100000);  
  30.   }
  31. char print[40]={'l','e','d','1',' ','i','s',' ','o','p','e','n'};
  32. char print1[40]={'l','e','d','1',' ','i','s',' ','c','l','o','s','e'};
  33. while(1)
  34.   {
  35.     for( i=4;i<8;i++)//循环点亮 led
  36.     {      
  37.             print[3]= i+45;
  38.       print1[3]= i+45;
  39.       MP0_4DAT &= ~( 1<< i);                 
  40.       //      putout(print);
  41.       Delay(300000);  
  42.       MP0_4DAT |= ( 1<< i);
  43.       //      putout(print1);
  44.       Delay(300000);  
  45.     }

  46.   }
  47. }
复制代码

然后编写C语言与汇编跳转程序
文件名称为led.s
  1. .global _start
  2. _start:
  3.      bl main;
  4. halt:
  5.     b halt
复制代码
接着书写makefile

下载我是通过SecureCRT,我本来打算通过SD卡下载的,但是一直没搞清楚LED.bin放到SD卡哪个文件,所以就放弃了,若有童鞋知道可以告诉我一下!!!








1个回复

杨永胜 发表于 2015-8-27 10:02:33
  1. dd iflag=dsync oflag=dsync if=修改为你的bin文件的路径 of=/dev/sdb seek=1
复制代码

linux下执行上面的命令,试试看能不能下载。
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-12-18 09:54 , Processed in 0.507115 second(s), Total 35, Slave 25 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表