标签: embedded-linux

学习Uboot编程

请建议如何启动 uboot 编程的方法或来源。

embedded-linux u-boot

1
推荐指数
1
解决办法
2155
查看次数

重定向到文件时“顶部”输出被截断?

我的项目需要将“Top”输出重定向到文件中。

我正在运行几个应用程序。当我在 telnet 上打开 top 时,我得到了我的应用程序之一的完整路径。看起来像下面这样

 2079  1952 root     R    12296   2%   0% -s=1 -PrjPath="/usr/local/Myproject/Application"  -stgMode=1    
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下命令将输出重定向到文件时,它会被截断。

命令:

tope -b -n1    
Run Code Online (Sandbox Code Playgroud)

输出:

2079  1952 root     R    12296   2%   0% -s=1 -PrjPath="/usr/local/Myproject/Appl    
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么它被截断?怎么才能满。

以下是我的环境。嵌入式Linux内核v2.6.29。busyboxy v1.10.4

“top”命令是 busybox 的一部分。

预先感谢 Bhargav Vyas

linux embedded-linux top-command

1
推荐指数
1
解决办法
3725
查看次数

Does arm-linux-gnueabihf-g++ have reliable C++0x support

I tried to use arm-linux-gnueabihf-g++ compiler (from g++-arm-linux-gnueabihf package) to compile simple program with lambda expressions, with -std=c++0x switch. It works. Does anybody have experience using C++0x features with this compiler? I want to know, whether this support is reliable and safe for use.

The package is from Ubuntu repository, OS is updated (12.04 32 bits). Version: arm-linux-gnueabihf-g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

c++ arm cross-compiling embedded-linux c++11

1
推荐指数
1
解决办法
1813
查看次数

Bit Bang with SPI (fwirte, write performance)

我有一个有点爆炸的代码,它允许我通过 SPI 线发送大约 4 兆的数据。它的嵌入式代码用于使用 Linux 内核的自定义硬件。

问题是这需要很长时间才能完成(4 小时),这很可能是因为内核正在做更多的事情。基本上我的代码是这样的(aprox):

unsigned char data=0xFF;

BB_SPI_Init();
SPI_start();//activates chipselect(enable)

for(i=0;i<8;i++){
    if(data & 0x80){
        gpio_set_value(SPI_MOSI,1);
    }else{
        gpio_set_value(SPI_MOSI,0);
    }
    //send pulse clock
    gpio_set_value(SPI_CLK,0);
    gpio_set_value(SPI_CLK,1);
    data<<=1;
}
SPI_stop();//deactivates chipselect(disable)
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的问题,但我注意到如果我使用 write 将数据发送到 linux gpio 处理程序/sys/class/gpio/gpioXX/value(其中 XX 是任何 gpio 编号),则需要 4 小时。但是,如果我fwrite()用于发送到同一台设备,则需要 3 个小时。但是,如果您write()仅用于启用(SPI_stop()和 SPI_ start())并fwrite()用于发送到 MISO、CLK,它只需要 1 小时 30 分钟。

那么,以此为基础,有人可以向我解释这是怎么发生的吗?我的想象说这是处理线程的方式,并且在每个软件周期中它解析 2 个线程(fwrite()write()),如果只是使用的函数之一,但现在我仍在调查,有人可以让我知道任何类型的信息? 有没有更好的方法来处理这个问题?

仅供参考 无法使用内核驱动程序 spi,因为硬件已连接到 gpios,使用 bit bang …

linux spi linux-kernel embedded-linux bitstream

1
推荐指数
1
解决办法
1986
查看次数

程序打破printf()

在第一个printf()程序打破之后,甚至没有到达下一个程序printf().

void UART_rx(void) {
    char rx_buffer[256];
    int rx_length = read(uart_filestream, (void*) rx_buffer, sizeof(rx_buffer));

    if(rx_length > 0) {
        printf("%s", rx_buffer);
        printf(" ok");
        rx_buffer[12] = '\0';
        printf(" ok");
        char str_id[4];
        char *start;
        start = strchr(rx_buffer, ',');
        start++;
        strcpy(str_id,start);
        int id;
        id = atoi(str_id);
        printf("Liczba typu int: %d, oraz jako ciag znakow: %s\n", id, str_id);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题出在哪里?

c printf embedded-linux

1
推荐指数
1
解决办法
138
查看次数

USB:小工具:设备模式:configfs:单一配置上的uvc和大容量存储?

我正在尝试在设备模式下为单个 USB 设备控制器端口添加 uvc 和大容量存储。我正在使用 configfs 来完成工作。

任何人都可以告诉如何做到这一点。

问候, GBiradar

linux linux-kernel embedded-linux uvc

1
推荐指数
1
解决办法
2647
查看次数

如何延迟 Linux 内核模块临界区

我需要在 USB 内核模块中添加一个短暂的延迟,以避免在小型嵌入式 Linux 设备启动时出现极其罕见的内核恐慌。有问题的代码如下。如果我在代码中添加一个 prink,该设备会成功运行一整夜,而之前它曾经失败过。我想添加一个小的延迟,但 usleep_range 和 msleep 会导致内核回溯“在原子时调度”。如何在不睡觉的情况下在这部分代码中添加延迟?是一个while循环来做到这一点吗?

usb_hub_for_each_child(udev, chix, childdev) {
    printk(KERN_ERR "r8a66597: Start USB Discover\n");
    //usleep_range(10000, 11000);
    //preempt_disable();
    //msleep(1);
    collect_usb_address_map(childdev, map);
    //usleep_range(10000, 11000);
    printk(KERN_ERR "r8a66597: Stop USB Discover\n");
    //msleep(1);
    //preempt_enable();
}
Run Code Online (Sandbox Code Playgroud)

linux kernel linux-device-driver linux-kernel embedded-linux

1
推荐指数
1
解决办法
4000
查看次数

在fork()之后调用exec()会导致现有进程中的数据丢失

我对linux编程比较陌生.我想知道exec()调用后的函数是否fork()会导致父进程中的数据丢失.

c linux fork exec embedded-linux

1
推荐指数
1
解决办法
97
查看次数

U-Boot 如何找到内核?是否需要知道确切地址

我是嵌入式系统上 Linux 编程的新手。我想了解更多关于嵌入式引导加载程序和 U-boot。我的主要问题无疑是通用的,但我试图了解 U-boot 如何准确地找到 Linux 内核。

更具体地说,我使用的是 BeagleBone Black。我有一个 SD 卡分区如下(取自在线示例),一个包含 MLO + U-Boot 的 FAT32 分区,一个包含内核 + 设备树的 EXT4 分区和另一个包含 rootfs 的 EXT4 分区。

我知道 ROM 主引导加载程序首先加载,在 FAT 分区中定位 MLO 文件,然后将控制权传递给 U-Boot。

U-Boot 如何最终准确定位内核?这和uEnv.txt启动配置文件有关吗?我知道 U-Boot 有一个学习曲线,需要一些阅读,但只是为了提前获得一些知识。

如果我更改 SD 卡映像并放置更多分区并尝试从它启动,而内核在不同的分区上,现在会发生什么?我是否需要特别告诉 U-Boot 在哪里可以找到内核,或者它会一直搜索直到找到它?

embedded-linux bootloader u-boot beagleboneblack partition

1
推荐指数
1
解决办法
2355
查看次数

linux 系统调用 mmap(2) 和 posix mmap(3) 函数有什么区别?

linux 系统调用 mmap(2) 和 posix mmap(3) 函数有什么区别?浏览源代码时如何区分使用的是哪一个,因为它们的头文件是一样的。具体见下。

我在 Ubuntu 上运行。我认为您使用的操作系统无关紧要。手册页确实确实没有提供太多有用的信息。

根据 Jörg W Mittag 的回复,我认为当我浏览源代码时 mmap 必须是 posix 函数。但我想知道为什么我在使用 mmamp(3) 函数时不需要显式链接到 posix 库。我的意思是编译源代码时不需要额外的链接标志。

根据Faschingbauer的回复,如果我们得出没有实现posix mmap的结论,就会出现一些问题。你看,实现了一些posix函数?例如,shm_opn?sem_open,mq_open?。同时?有相应的具有相同的功能(例如,shmget,semget,msgget)。如何解释?至少,我认为一些posix功能是由linux实现的。

#log for "man 2 mmap"
MMAP(2)  Linux Programmer's Manual                                                         
NAME
       mmap, munmap - map or unmap files or devices into memory
SYNOPSIS
       #include <sys/mman.h>



#log for "man 3 mmap"
MMAP(3POSIX)  POSIX Programmer's Manual                                                    
PROLOG
       This  manual page is part of the POSIX Programmer's Manual.  The Linux implementation of this interface may differ (consult the corresponding …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu posix embedded-linux difference

1
推荐指数
1
解决办法
184
查看次数