天嵌 ARM开发社区

 找回密码
 注册
查看: 2404|回复: 3

step23 中运行LED控制程序出现 Segmentation fault

[复制链接]
仰天大笑中 发表于 2013-1-18 01:08:57 | 显示全部楼层 |阅读模式
完成按照天嵌给的LED等控制代码,编译出来的东西到板子上运行,出现,Segmentation fault这个提示,即使是使用天嵌的GPIO-Control这个驱动,还是出现Segmentation fault。
   
    但是如果从天嵌编译好文件系统取出leds这个文件到板子上,却可以实现流水功能。
   
    麻烦懂大神,给解答
TQ-lkp 发表于 2013-1-18 08:49:09 | 显示全部楼层
1编绎器是否正确
2代码是否有bug,最简单的调试方法,打印输出
 楼主| 仰天大笑中 发表于 2013-1-19 00:37:07 | 显示全部楼层
TQ-lkp 发表于 2013-1-18 08:49
1编绎器是否正确
2代码是否有bug,最简单的调试方法,打印输出

为了排除其他情况,我烧写了TQ提供的2.6.30.4的内核和文件系统,然后把开机启动的中开启流水等的命令屏蔽了,具体是这样#/etc/rc.d/init.d/leds start。 接着重启板子,讲开机流水灯取消。
    接着编译 TQ的控制led代码,如下
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>

int main(int argc, char **argv)
{
        int on;
        int led_no;
        int fd;
        if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
            on < 0 || on > 1 || led_no < 1 || led_no > 4) {
                fprintf(stderr, "Usage: leds led_no 0|1\n");
                exit(1);
        }
        fd = open("/dev/GPIO-Control", 0);
        if (fd < 0) {
                perror("open device leds");
                exit(1);
        }
        ioctl(fd, on, (led_no-1));
        close(fd);
        return 0;
}

Makefile文件也未做修改,

CROSS=arm-linux-

all: leds

leds:leds.c
        $(CROSS)gcc -o leds leds.c
        $(CROSS)strip leds
clean:
        @rm -vf leds *.o *~
使用的是4.3.3的交叉编译器,编译情况如下:
arm-linux-gcc -o leds leds.c
arm-linux-strip leds

编译成功,讲生成的执行文件,扔到板子中去执行,执行情况如下:
[root@EmbedSky /mnt]# ls
leds
[root@EmbedSky /mnt]# chmod 777 leds
[root@EmbedSky /mnt]# ls
leds
[root@EmbedSky /mnt]# ./leds
Segmentation fault

如果是用TQ提供apps中已经编译好的leds,执行情况如下
[root@EmbedSky test]# ./leds
Usage: leds led_no 0|1

使用文件系统中自带的,执行如下:
[root@EmbedSky init.d]# ./leds
[root@EmbedSky init.d]#

没有指示信息,

请问这是怎么回事啊,急急急




 楼主| 仰天大笑中 发表于 2013-1-23 01:28:39 | 显示全部楼层
仰天大笑中 发表于 2013-1-19 00:37
为了排除其他情况,我烧写了TQ提供的2.6.30.4的内核和文件系统,然后把开机启动的中开启流水等的命令屏蔽 ...

还我自己找出问题的关键了,给大家分享一下,原来是换成了FTP传输到板子上,因为FTP默认是按字节传输,而我传输的是.bin文件,是二进制文件。把FTP传输方式改为二进制传输,问题就解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-28 22:33 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表