小编Bar*_*iak的帖子

嵌入式Linux - 引导阶段

我想系统化我的U-Boot/linux知识.在每个嵌入式平台中是否需要至少2个引导加载程序阶段?或者后续流程可以变化吗?

  1. 第一阶段引导加载程序(可以是U-Boot)存储在处理器的ROM内部,无法更新.它将从内部缓存内存运行.此U-Boot需要(至少):初始化RAM,初始化外部闪存,初始化串行控制台,读取和运行第二阶段引导加载程序.

  2. 第二阶段引导加载程序(可以是U-Boot)存储在RW闪存中.它将处理以太网,闪存RW功能等.可以自定义和覆盖此U-Boot.主要任务是将Linux内核加载到RAM中并运行它.

  3. linux内核启动.

第一阶段引导加载程序是否始终为只读?

linux embedded embedded-linux u-boot

11
推荐指数
2
解决办法
5934
查看次数

如何强制subversion提交过时的文件?

我想用前一版本"覆盖"我的最后一次提交.我试图检查版本631,做一些更改,并将其作为版本633提交.但是svn不同意,因为版本632存在.

最简单的方法是什么?这是一个多文件提交.我不想手动制作它.

svn version-control commit

10
推荐指数
2
解决办法
3万
查看次数

如果没有从DHCP获取静态IP(脚本)

我在linux上使用嵌入式设备.我想先使用DHCP客户端,但如果DHCP服务器没有应答,我想设置静态默认IP.我想这应该不复杂,但我没有找到严格的答案.

我正在考虑2个解决方案(不幸的是我可以在几天内测试它们):

  1. 我用ifconfig设置静态IP,然后我调用udhcpc.如果udhcpc无法获得新的IP,旧的IP将保留.

  2. 我也可以先调用udhcpc,稍等片刻,检查是否获得了IP.但这对我来说并不好.我不想在启动时添加任何等待例程.

BR Bartek

我使用udhcpc - 类似于:

udhcpc -n -f -i eth0 
if ifconfig | grep -A1 eth0 | grep inet 
    then 
Run Code Online (Sandbox Code Playgroud)

linux ip dhcp ifconfig

10
推荐指数
1
解决办法
3万
查看次数

无法连接到 wpa_supplicant:wlan0 - 重试

我在嵌入式设备上工作,并且正在使用 wpa_supplicant 配置 WLAN 模块(QCA6174 - ath10k 驱动程序)。

  • 我加载驱动程序模块(backports-20151120):

    insmod /lib/modules/3.10.65-b2196-h301/wlan/compat.ko; 
    insmod lib/modules/3.10.65-b2196-h301/wlan/cfg80211.ko; 
    insmod /lib/modules/3.10.65-b2196-h301/wlan/mac80211.ko; 
    insmod /lib/modules/3.10.65-b2196-h301/wlan/ath.ko; 
    insmod /lib/modules/3.10.65-b2196-h301/wlan/ath10k_core.ko skip_otp=y; 
    insmod /lib/modules/3.10.65-b2196-h301/wlan/ath10k_pci.ko
    
    Run Code Online (Sandbox Code Playgroud)
  • 我启动 wpa_supplicant (默认 wpa_supplicant.conf):

    wpa_supplicant -dd -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
    
    [  182.257304] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    
    Run Code Online (Sandbox Code Playgroud)

一切似乎都工作正常。我看到wlan0接口,我可以用iwlist扫描,/var/run/wpa_supplicant/wlan0存在。

  • 但我无法使用 wpa_cli 接口:

     #wpa_cli 
     wpa_cli v2.4
     Copyright (c) 2004-2015, Jouni Malinen <j@w1.fi> and contributors
     Selected interface 'wlan0'
    
     Interactive mode
    
     Could not connect to wpa_supplicant: wlan0 - re-trying
    
    Run Code Online (Sandbox Code Playgroud)

您有任何提示我如何找出问题吗?

linux wifi wpa wpa-supplicant

5
推荐指数
1
解决办法
3万
查看次数

buildroot - 如何更改内核版本字符串

我使用buildroot和Armstrong linux(Linux4sam)处理SAM9G25 EK板.我的脚本是创建linux版本"2.6.39+",这个"+"令人困惑(/ lib/modules文件夹等).我想删除它.我发现只有两个文件.uImage.cmd和kernel.release包含这个字符串,但都生成了.

这个字符串在哪里创建?

release linux-kernel buildroot

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

通过/ dev/mtd更新内核

我正在研究嵌入式设备,其中内核映像存储在flash的/ dev/mtd4部分中.我想在没有Uboot的情况下更新这个内核.

这怎么可能 ?我试着打电话:

echo ./kernel.bin > /dev/mtdblock4 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.下次引导时,存储的数据不会被识别为内核.

linux embedded kernel

3
推荐指数
2
解决办法
1万
查看次数

为什么我需要两个不同的 wpa_supplicant 连接(wpa_cli - ctrl_conn 和 mon_conn)

我正在编写自己的 C 库来管理 linux 中的 wlan。我基于 wpa_cli 接口,但我不明白,为什么他们使用两个 wpa_ctrl 结构:

static struct wpa_ctrl *ctrl_conn;
static struct wpa_ctrl *mon_conn;
Run Code Online (Sandbox Code Playgroud)

当我只使用 ctrl_conn 打开和附加时它也有效吗?

linux wireless embedded-linux wpa

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

so 中的未定义符号(在链接对象中定义)

我构建的共享库有问题。它基于 wpa_cli 并使用 wpa_ctrl。包括来自 wpa_ctrl 的符号,但来自 eloop - 不是:

g++ -Wall -g -fPIC -DPIC -fno-rtti -fno-exceptions -pthread -g -fno-exceptions -pthread -DPIC -fPIC -shared libwlan.o  wpa_supplicant-2.2/src/common/wpa_ctrl.o wpa_supplicant-2.2/src/utils/eloop.o wpa_supplicant-2.2/src/utils/wpa_debug.o wpa_supplicant-2.2/src/utils/common.o wpa_supplicant-2.2/src/utils/os_unix.o wpa_supplicant-2.2/src/utils/edit_simple.o -o libwlan.so
Run Code Online (Sandbox Code Playgroud)

.

nm wpa_supplicant-2.2/src/common/wpa_ctrl.o | grep wpa_ctrl_attach
00000578 T wpa_ctrl_attach
nm libs/libwlan/libwlan.so | grep wpa_ctrl_attach
00040340 T wpa_ctrl_attach
Run Code Online (Sandbox Code Playgroud)

.

nm wpa_supplicant-2.2/src/utils/eloop.o | grep eloop_register_read_sock 
000003bc T eloop_register_read_sock
nm libs/libwlan/libwlan.so | grep eloop_register_read_sock
000407dc T eloop_register_read_sock
         U _Z24eloop_register_read_sockiPFviPvS_ES_S_
Run Code Online (Sandbox Code Playgroud)

c++ linker development-environment

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

使用bash脚本对文件中的数据进行排序

我有以下文件:

# cat /var/data/wlan_cells.log
"Tech 1" "57" "-67" "0"
"GUEST01" "52" "-69" "0"
"SWSGP01" "52" "-69" "0"
"GateAP" "100" "-39" "0"
"AP_9 test" "78" "-59" "0"
"surf" "13" "-85" "0"
"Tech 2" "18" "-83" "0"
Run Code Online (Sandbox Code Playgroud)

如何按信号质量(第二个值)对线进行排序?预期结果:

# cat /var/data/wlan_cells.log
"GateAP" "100" "-39" "0"
"AP_9 test" "78" "-59" "0"
"Tech 1" "57" "-67" "0"
"GUEST01" "52" "-69" "0"
"SWSGP01" "52" "-69" "0"
"Tech 2" "18" "-83" "0"
"surf" "13" "-85" "0"
Run Code Online (Sandbox Code Playgroud)

bash shell

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