我想系统化我的U-Boot/linux知识.在每个嵌入式平台中是否需要至少2个引导加载程序阶段?或者后续流程可以变化吗?
第一阶段引导加载程序(可以是U-Boot)存储在处理器的ROM内部,无法更新.它将从内部缓存内存运行.此U-Boot需要(至少):初始化RAM,初始化外部闪存,初始化串行控制台,读取和运行第二阶段引导加载程序.
第二阶段引导加载程序(可以是U-Boot)存储在RW闪存中.它将处理以太网,闪存RW功能等.可以自定义和覆盖此U-Boot.主要任务是将Linux内核加载到RAM中并运行它.
linux内核启动.
第一阶段引导加载程序是否始终为只读?
我想用前一版本"覆盖"我的最后一次提交.我试图检查版本631,做一些更改,并将其作为版本633提交.但是svn不同意,因为版本632存在.
最简单的方法是什么?这是一个多文件提交.我不想手动制作它.
我在linux上使用嵌入式设备.我想先使用DHCP客户端,但如果DHCP服务器没有应答,我想设置静态默认IP.我想这应该不复杂,但我没有找到严格的答案.
我正在考虑2个解决方案(不幸的是我可以在几天内测试它们):
我用ifconfig设置静态IP,然后我调用udhcpc.如果udhcpc无法获得新的IP,旧的IP将保留.
我也可以先调用udhcpc,稍等片刻,检查是否获得了IP.但这对我来说并不好.我不想在启动时添加任何等待例程.
BR Bartek
我使用udhcpc - 类似于:
udhcpc -n -f -i eth0
if ifconfig | grep -A1 eth0 | grep inet
then
Run Code Online (Sandbox Code Playgroud) 我在嵌入式设备上工作,并且正在使用 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)您有任何提示我如何找出问题吗?
我使用buildroot和Armstrong linux(Linux4sam)处理SAM9G25 EK板.我的脚本是创建linux版本"2.6.39+",这个"+"令人困惑(/ lib/modules文件夹等).我想删除它.我发现只有两个文件.uImage.cmd和kernel.release包含这个字符串,但都生成了.
这个字符串在哪里创建?
我正在研究嵌入式设备,其中内核映像存储在flash的/ dev/mtd4部分中.我想在没有Uboot的情况下更新这个内核.
这怎么可能 ?我试着打电话:
echo ./kernel.bin > /dev/mtdblock4
Run Code Online (Sandbox Code Playgroud)
但它不起作用.下次引导时,存储的数据不会被识别为内核.
我正在编写自己的 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 打开和附加时它也有效吗?
我构建的共享库有问题。它基于 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) 我有以下文件:
# 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)