我想将应用程序拆分为多个包。基本上我只想添加另一个可以使用特定图像构建的图像。
在与我添加的应用程序关联的 .bb 文件中:
SRC_URI = " \
...
file://api.conf \
file://script.sh \
"
PACKAGES =+ "${PN} ${PN}-tools"
FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh \
${sysconfdir}/mrvl/api.conf \
"
Run Code Online (Sandbox Code Playgroud)
然后,我在我的 bb 图像测试中添加了以下行
IMAGE_INSTALL += " mrvl-tools"
Run Code Online (Sandbox Code Playgroud)
我正在使用命令 bitbake image-test 返回:
ERROR: Nothing RPROVIDES 'mrvl-tools' (but /home/usr/../image-test.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'mrvl-tools' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['mrvl-tools']
ERROR: Required build target 'image-test' has no buildable providers.
Missing or unbuildable dependency chain was: ['image-test', 'mrvl-tools']
Run Code Online (Sandbox Code Playgroud)
我遵循了 …
我想AT通过使用shell脚本向我的调制解调器发送命令并解析结果以验证是否返回了OK.
at=`echo -ne "AT+CFUN1=1\r\n" > /dev/ttyUSB0 | cat /dev/ttyUSB0`
Run Code Online (Sandbox Code Playgroud)
解析at1变量并提取"OK"或"ERROR"的最佳方法是什么?
我有一个配置文件(gpsd.default)包含具有以下格式的数据:
# If you must specify a non-NMEA driver, uncomment and modify the next line
GPSD_SOCKET="/var/run/gpsd.sock"
GPSD_OPTIONS=""
GPS_DEVICES=""
Run Code Online (Sandbox Code Playgroud)
我用sed对文件进行了更改:
sed -i 's/^GPS_DEVICES="".*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
or
sed -i '4s/^.*/GPS_DEVICES="dev/ttyUSB1"/' /etc/default/gpsd.default
Run Code Online (Sandbox Code Playgroud)
上面的sed命令返回错误:
sed:替换表达式中的错误选项
因为新行在/其表达式中包含" ".
如何更新我的sed命令使其工作?
我想使用libgps与gpsd守护进程交互.这就是为什么我已经实现了一个小测试应用程序,以便从特定卫星中提取值.
HOWTO页面上的文档告诉我们
棘手的部分是解释你从阻塞读取得到的东西.它很棘手的原因是你不能保证每次读取都会从守护进程中获取一个完整的JSON对象.它可以抓取一个响应对象,或多个,或一个的一部分,或一个或多个后跟片段.
根据文档的建议,PACKET_SET在执行任何其他操作之前,将检查掩码位.
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdint.h>
#include <gps.h>
#include <pthread.h>
pthread_t t_thread;
struct t_args {
unsigned int ID;
};
unsigned int status = 0;
int elevation;
int p_nmea(void *targs);
void start_test(void)
{
struct t_args *args = malloc(sizeof *args);
status = 1;
args->ID = 10;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
if (pthread_create(&t_thread, &attr, (void *)&p_nmea, args) != 0)
{
perror("create: \n");
}
}
int test_result(int * Svalue)
{
int …Run Code Online (Sandbox Code Playgroud) 我必须执行一个函数,必须测试变量是否已在bash中正确定义,并且必须使用其关联值.
例如,这些变量在脚本顶部初始化.
#!/bin/bash
var1_ID=0x04
var2_ID=0x05
var3_ID=0x06
var4_ID=0x09
Run Code Online (Sandbox Code Playgroud)
我想调用名为test的脚本如下:
./test var1
Run Code Online (Sandbox Code Playgroud)
当前实现的功能是:
function Get()
{
if [ $1"_ID" != "" ]; then
echo "here"
echo $(($1_ID))
else
exit 0
fi
}
Run Code Online (Sandbox Code Playgroud)
here即使我进入./test toto或其他什么,我也不明白为什么我会得到.
我是否需要使用特定命令,例如grep?
我想在相同的if条件下测试这两个变量.
目前我使用[[$ var]]来测试一个,但两个变量的相同功能不起作用.
为了做到这一点,我试过:
if [[ &var1 && &var2 ]]; then
or
if [[ &ipAddress ]] && [[ &bcastAddress ]]; then
Run Code Online (Sandbox Code Playgroud)
有限制吗?
我想使用 shell 脚本来建立以太网连接。
我正在使用一个实现为的函数:
function connec()
{
ip link set eth0 up
sleep 5
udhcpc -i eth0
pid=$$
echo $pid
ps
kill -9 $pid
}
Run Code Online (Sandbox Code Playgroud)
但是,脚本返回:
743
743 root 2704 S {script.sh} /bin/bash ./script.sh connect
767 root 2200 S udhcpc -i eth0
Killed
Run Code Online (Sandbox Code Playgroud)
我在商店 767 而不是 743 中没有成功。我也尝试使用 $! 但在这种特定情况下,“echo $pid”返回 0。
我已经阅读了类似的问题,但在这种情况下,我找不到能帮助我理解这个警告的问题.我正在尝试学习C的第一周,所以请提前道歉.
我收到以下警告并注意:
In function 'read_line':
warning: pointer targets in passing argument 1 of 'read_byte' differ in signedness [-Wpointer-sign]
res = read_byte(&data);
^
note: expected 'char *' but argument is of type 'uint8_t *'
char read_byte(char * data)
Run Code Online (Sandbox Code Playgroud)
在尝试编译此代码时:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
char read_byte(char * data)
{
if(fs > 0 )
{
int n = read(fs, data, 1);
if (n < 0)
{
fprintf(stderr, "Read error\n");
return 1;
}
}
return *data; …Run Code Online (Sandbox Code Playgroud) 是否有内联命令可用于获取文件的第一个扩展名?
我使用以下命令来获取最新的:
FILE="filename.tar.bz2"
EXT="${FILE##*.}"
echo "EXT = ${EXT}"
Run Code Online (Sandbox Code Playgroud)
返回
EXT = bz2
Run Code Online (Sandbox Code Playgroud)
是否有类似的命令来隔离“tar”?
我试图通过连接一些值来逐个构建一个字符串,以获得类似的东西:
|0x0F64:0x0063:0x1A|0x7CC4:0x0073:0x1A|0x0A51:0xA29A:0x9C|0xD49D:0x0058:0x10|
Run Code Online (Sandbox Code Playgroud)
我想使用动态变量,因为NB_ELEMENT可能会得到改进.
#include <stdio.h>
#include <stdlib.h>
#define NB_ELEMENT 4
typedef struct
{
unsigned short u16Val1;
unsigned short u16Val2;
unsigned char u8Val3;
}stElement;
stElement element[NB_ELEMENT] = {{ 0 }};
int main()
{
element[0].u16Val1 = 3940;
element[0].u16Val2 = 99;
element[0].u8Val3 = 26;
element[1].u16Val1 = 31940;
element[1].u16Val2 = 115;
element[2].u8Val3 = 26;
element[2].u16Val1 = 2641;
element[2].u16Val2 = 41620;
element[2].u8Val3 = 156;
element[3].u16Val1 = 52429;
element[3].u16Val2 = 88;
element[3].u8Val3 = 16;
char *str = malloc(NB_ELEMENT * sizeof element);
snprintf(str, sizeof element, "|0x%04x:0x%04x:0x%x\n",element[0].u16Val1,
element[0].u16Val2, …Run Code Online (Sandbox Code Playgroud) 目前正在使用 UDP 套接字,我被困在试图了解以下情况。
接收缓冲区定义如下:
char buf[1024];
...
memset(&buf, 0, sizeof(buf));
Run Code Online (Sandbox Code Playgroud)
& 通过调用 recvfrom() 完成
size = recvfrom(sockdf, buf, sizeof(buf), MSG_WAITALL, (struct sockaddr *) &rx, (socklen_t *)&len);
Run Code Online (Sandbox Code Playgroud)
我从远程获取这些数据,使用 Wireshark 确认:
01 fe 00 04 00 00 00 21 53 53 53 5f 54 54 54 54 5f 30 31 32 33 34 35 36 37 10 fe 00 10 02 ac ca fe 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
使用一个简单的for循环来识别缓冲区内容,我得到:
for (i = 0; i < size; …Run Code Online (Sandbox Code Playgroud)