页次: 1
在按照《linux驱动入门》书中添加I2C到设备树发现nano里并没有
sys/devices/platform/soc/1c27000.i2c/i2c-0/0-0050/
I2C-0这一目录,本书甚至给出代码
&i2c0 {
clock-frequency = <100000>; //时钟设置为 100KHz
status = "okay";
at24c02: at24c02@50 {
compatible = "test,at24c0x";
reg = <0x50>;
};
};
这样一般笔带,随后我只能开船畅游百度。
第一天无果
第二天我试图在原有的内核中找线索,我在arch/arm/boot/dts/sun4i-a10.dtsi中找到这么一串代码
i2c0: i2c@1c2ac00 {
compatible = "allwinner,sun4i-a10-i2c";
reg = <0x01c2ac00 0x400>;
interrupts = <7>;
clocks = <&ccu CLK_APB1_I2C0>;
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
将其拷贝粘贴debug,神奇的一幕发现了
ls sys/devices/platform/soc/1c27000.i2c/i2c-0/0-0050
已经生成了i2c-0
/ # insmod /home/zr/i2c.ko
[ 144.167822] i2c: loading out-of-tree module taints kernel.
/ # ls sys/devices/platform/soc/1c27000.i2c/i2c-0/0-0050/of_node/
compatible name reg
/ # ls sys/devices/platform/soc/1c27000.i2c/i2c-0/0-0050/
at24c02 modalias of_node/ subsystem/
driver/ name power/ uevent
究其原因是因为compatible属性没有适配,将compatible填写成sun4i-a10-i2c就可以了。
这是我的设备树
dtsi
i2c0: i2c@1c27000 {
compatible = "allwinner,sun4i-a10-i2c";
reg = <0x01c27000 0x400>;
interrupts = <7>;
clocks = <&ccu CLK_BUS_I2C0>;
resets = <&ccu RST_BUS_I2C0>;
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
};
dts
&i2c0 {
clock-frequency = <100000>; //时钟设置为 100KHz
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "okay";
at24c02@50 {
compatible = "test,at24c0x";
reg = <0x50>;
};
};
下面继续调试i2c
linux-5.7.1-kernel.tar.xz
我传dtb和zImage文件
我用的是ili9341屏幕,串口输出测试就好了
如果是参考 小白自制Linux开发板 七. USB驱动配置:https://www.cnblogs.com/twzy/p/15243838.html
在插入移动硬盘的时候也许会出现
[ 56.707180] usb usb1-port1: Cannot enable. Maybe the USB cable is bad?
[ 56.723018] usb usb1-port1: unable to enumerate USB device
插入USB扩展坞,再将移动硬盘插入USB扩展坞。这时候就能成功识别移动硬盘了
其实不排除是内核配置问题。有兴趣的小伙伴可以修改一下
关于nano音频的除了按照 https://www.cnblogs.com/twzy/p/15356109.html 食用外。需要注意以下几点:
一: 如果你编译的时候就是冲着播放器来的,第一次的时候就要勾选asla相关配置,注意:以下操作是你配置好
buildroot的时候再配置
1 Toolchain ---> Enable WCHAR support
2 Target packages ---> Audio and video applications ---> alsa-utils --->全部勾选
2.5 Target packages ---> Audio and video applications ---> mpg123 安装播放器 ,根据自己喜好
3 Target packages --->Audio/Sound ---> alsa-lib --->全部勾选
全部完成再等待漫长的make就行了
二:buildroot文件系统tar到SD卡后
1编辑SD卡里的文件系统
vi /etc/asound.state 加入以下代码
state.Loopback {
control.1 {
iface PCM
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.2 {
iface PCM
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.3 {
iface PCM
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.4 {
iface PCM
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.5 {
iface PCM
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.6 {
iface PCM
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.7 {
iface PCM
subdevice 1
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.8 {
iface PCM
subdevice 1
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.9 {
iface PCM
subdevice 1
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.10 {
iface PCM
subdevice 1
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.11 {
iface PCM
subdevice 1
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.12 {
iface PCM
subdevice 1
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.13 {
iface PCM
subdevice 2
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.14 {
iface PCM
subdevice 2
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.15 {
iface PCM
subdevice 2
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.16 {
iface PCM
subdevice 2
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.17 {
iface PCM
subdevice 2
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.18 {
iface PCM
subdevice 2
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.19 {
iface PCM
subdevice 3
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.20 {
iface PCM
subdevice 3
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.21 {
iface PCM
subdevice 3
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.22 {
iface PCM
subdevice 3
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.23 {
iface PCM
subdevice 3
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.24 {
iface PCM
subdevice 3
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.25 {
iface PCM
subdevice 4
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.26 {
iface PCM
subdevice 4
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.27 {
iface PCM
subdevice 4
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.28 {
iface PCM
subdevice 4
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.29 {
iface PCM
subdevice 4
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.30 {
iface PCM
subdevice 4
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.31 {
iface PCM
subdevice 5
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.32 {
iface PCM
subdevice 5
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.33 {
iface PCM
subdevice 5
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.34 {
iface PCM
subdevice 5
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.35 {
iface PCM
subdevice 5
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.36 {
iface PCM
subdevice 5
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.37 {
iface PCM
subdevice 6
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.38 {
iface PCM
subdevice 6
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.39 {
iface PCM
subdevice 6
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.40 {
iface PCM
subdevice 6
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.41 {
iface PCM
subdevice 6
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.42 {
iface PCM
subdevice 6
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.43 {
iface PCM
subdevice 7
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.44 {
iface PCM
subdevice 7
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.45 {
iface PCM
subdevice 7
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.46 {
iface PCM
subdevice 7
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.47 {
iface PCM
subdevice 7
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.48 {
iface PCM
subdevice 7
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.49 {
iface PCM
device 1
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.50 {
iface PCM
device 1
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.51 {
iface PCM
device 1
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.52 {
iface PCM
device 1
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.53 {
iface PCM
device 1
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.54 {
iface PCM
device 1
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.55 {
iface PCM
device 1
subdevice 1
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.56 {
iface PCM
device 1
subdevice 1
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.57 {
iface PCM
device 1
subdevice 1
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.58 {
iface PCM
device 1
subdevice 1
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.59 {
iface PCM
device 1
subdevice 1
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.60 {
iface PCM
device 1
subdevice 1
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.61 {
iface PCM
device 1
subdevice 2
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.62 {
iface PCM
device 1
subdevice 2
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.63 {
iface PCM
device 1
subdevice 2
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.64 {
iface PCM
device 1
subdevice 2
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.65 {
iface PCM
device 1
subdevice 2
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.66 {
iface PCM
device 1
subdevice 2
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.67 {
iface PCM
device 1
subdevice 3
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.68 {
iface PCM
device 1
subdevice 3
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.69 {
iface PCM
device 1
subdevice 3
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.70 {
iface PCM
device 1
subdevice 3
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.71 {
iface PCM
device 1
subdevice 3
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.72 {
iface PCM
device 1
subdevice 3
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.73 {
iface PCM
device 1
subdevice 4
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.74 {
iface PCM
device 1
subdevice 4
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.75 {
iface PCM
device 1
subdevice 4
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.76 {
iface PCM
device 1
subdevice 4
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.77 {
iface PCM
device 1
subdevice 4
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.78 {
iface PCM
device 1
subdevice 4
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.79 {
iface PCM
device 1
subdevice 5
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.80 {
iface PCM
device 1
subdevice 5
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.81 {
iface PCM
device 1
subdevice 5
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.82 {
iface PCM
device 1
subdevice 5
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.83 {
iface PCM
device 1
subdevice 5
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.84 {
iface PCM
device 1
subdevice 5
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.85 {
iface PCM
device 1
subdevice 6
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.86 {
iface PCM
device 1
subdevice 6
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.87 {
iface PCM
device 1
subdevice 6
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.88 {
iface PCM
device 1
subdevice 6
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.89 {
iface PCM
device 1
subdevice 6
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.90 {
iface PCM
device 1
subdevice 6
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
control.91 {
iface PCM
device 1
subdevice 7
name 'PCM Rate Shift 100000'
value 100000
comment {
access 'read write'
type INTEGER
count 1
range '80000 - 120000 (step 1)'
}
}
control.92 {
iface PCM
device 1
subdevice 7
name 'PCM Notify'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.93 {
iface PCM
device 1
subdevice 7
name 'PCM Slave Active'
value false
comment {
access read
type BOOLEAN
count 1
}
}
control.94 {
iface PCM
device 1
subdevice 7
name 'PCM Slave Format'
value 2
comment {
access read
type INTEGER
count 1
range '0 - 52 (step 1)'
}
}
control.95 {
iface PCM
device 1
subdevice 7
name 'PCM Slave Rate'
value 48000
comment {
access read
type INTEGER
count 1
range '0 - 192000 (step 1)'
}
}
control.96 {
iface PCM
device 1
subdevice 7
name 'PCM Slave Channels'
value 2
comment {
access read
type INTEGER
count 1
range '1 - 1024 (step 1)'
}
}
}
state.Codec {
control.1 {
iface MIXER
name 'DAC Playback Volume'
value 55
comment {
access 'read write'
type INTEGER
count 1
range '0 - 63'
dbmin -7308
dbmax 0
dbvalue.0 -928
}
}
control.2 {
iface MIXER
name 'Headphone Playback Volume'
value 54
comment {
access 'read write'
type INTEGER
count 1
range '0 - 63'
dbmin -9999999
dbmax 0
dbvalue.0 -900
}
}
control.3 {
iface MIXER
name 'Headphone Playback Switch'
value.0 true
value.1 true
comment {
access 'read write'
type BOOLEAN
count 2
}
}
control.4 {
iface MIXER
name 'Line In Playback Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -450
dbmax 600
dbvalue.0 -450
}
}
control.5 {
iface MIXER
name 'FM In Playback Volume'
value 0
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -450
dbmax 600
dbvalue.0 -450
}
}
control.6 {
iface MIXER
name 'Mic In Playback Volume'
value 7
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -450
dbmax 600
dbvalue.0 600
}
}
control.7 {
iface MIXER
name 'Mic Boost Volume'
value 7
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin 0
dbmax 4200
dbvalue.0 4200
}
}
control.8 {
iface MIXER
name 'ADC Capture Volume'
value 3
comment {
access 'read write'
type INTEGER
count 1
range '0 - 7'
dbmin -450
dbmax 600
dbvalue.0 0
}
}
control.9 {
iface MIXER
name 'ADC Mixer Right Out Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.10 {
iface MIXER
name 'ADC Mixer Left Out Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.11 {
iface MIXER
name 'ADC Mixer Line In Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.12 {
iface MIXER
name 'ADC Mixer Right FM In Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.13 {
iface MIXER
name 'ADC Mixer Left FM In Capture Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.14 {
iface MIXER
name 'ADC Mixer Mic Capture Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.15 {
iface MIXER
name 'Left Mixer Right DAC Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.16 {
iface MIXER
name 'Left Mixer Left DAC Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.17 {
iface MIXER
name 'Left Mixer FM In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.18 {
iface MIXER
name 'Left Mixer Line In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.19 {
iface MIXER
name 'Left Mixer Mic In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.20 {
iface MIXER
name 'Right Mixer Left DAC Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.21 {
iface MIXER
name 'Right Mixer Right DAC Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.22 {
iface MIXER
name 'Right Mixer FM In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.23 {
iface MIXER
name 'Right Mixer Line In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.24 {
iface MIXER
name 'Right Mixer Mic In Playback Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.25 {
iface MIXER
name 'Headphone Source Playback Route'
value.0 Mixer
value.1 Mixer
comment {
access 'read write'
type ENUMERATED
count 2
item.0 DAC
item.1 Mixer
}
}
}
保存退出,输入
alsamixer 将第二条HeadPhone Source从Mixer改为ADC 原因是ADC是双通道的,左右耳机
除了第一个HeadPone和最后一个ADC,只要没有麦克风都可以关掉
如果发现没有HeadPhone怎么办?
vi /etc/asound.conf
defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1
保存退出再尝试以下,有声音后。输入
alsactl store
保存配置,需要恢复的时候
alsactl restore
每次开机播放音乐都没有声音怎么办?
尝试打开alsamixer,再退出。播放音乐,还是没声音
alsactl restore
alsamixer
应该就有了
首先关于nano开机跳过登陆直接进入命令行,这是自运行服务器的前提了。这里不需要重新编译buildroot,在nano里修改就行了
1 vi /etc/inittab
2在 ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL前面加#注释掉
#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
添加,这段意思是循环执行
ttyS0::respawn:~/bin/sh
如果你有什么自启动的程序可以写个.sh脚本,我这里有个start.sh里面是加载esp8266并且连上wifi,修改时间的脚本。
如果没有,可以不写以下代码 once的意思是执行一次
ttyS0::once:/opt/start.sh
注意原先开头是ttyS0,就填。根据自己的系统修改
保存重启,搞定!
还有一个是关于nona联网,执行mpg123听歌后nano崩溃重启的问题。
这是因为nano需要配置交换空间 参考 https://www.cnblogs.com/twzy/p/15160824.html
3. 增加swap分区
在使用一些软件的过程中,会遇到系统崩溃,尤其是使用 apt-get install 的时候,所以需要加入swap分区,可以简单理解为虚拟内存。
使用
free
查看当前swap大小,
使用如下命令创建你想要添加swap分区的大小
dd if=/dev/zero of=/swap1 bs=1M count=512 #改成你要设置的SWAP大小,512就是512MB
设置swap分区文件
mkswap /swap1
激活swap分区
swapon /swap1
此时使用free命令就能看到创建好的swap分区,但这只是临时性的, 重启会失效,需要配置一下,下次开机时候要开swap
vi /etc/fstab
操作,在最后一行添加
/swap1 swap swap defaults 0 0
破案了,这是解决前的CPU占用率
127 2 root RW 0 0% 49% [kspiirqd/eagle]
71 2 root SW 0 0% 10% [spi1]
47 2 root RW 0 0% 9% [kworker/0:1-pm]
128 121 root R 1492 7% 1% top
70 2 root SW 0 0% 0% [spi0]
121 1 root S 1500 7% 0% -sh
1 0 root S 1492 7% 0% init
100 1 root S 1484 7% 0% /sbin/syslogd -n
103 1 root S 1480 7% 0% /sbin/klogd -n
73 2 root IW 0 0% 0% [kworker/0:2-pm]
75 2 root IW< 0 0% 0% [kworker/0:1H-kb]
8 2 root SW 0 0% 0% [kdevtmpfs]
5 2 root IW 0 0% 0% [kworker/u2:0-es]
7 2 root SW 0 0% 0% [ksoftirqd/0]
14 2 root IW 0 0% 0% [kworker/u2:1-es]
2 0 root SW 0 0% 0% [kthreadd]
4 2 root IW< 0 0% 0% [kworker/0:0H-kb]
64 2 root IW< 0 0% 0% [xprtiod]
3 2 root IW 0 0% 0% [kworker/0:0-pm]
62 2 root IW< 0 0% 0% [rpciod]
总的占用率高达60%-70%,播放音乐非常卡顿。apt-update速度真是慢的离谱
观察到占用最大的是 127 2 root RW 0 0% 49% [kspiirqd/eagle]
百度了一下是中断问题,突然想起esp8266-f12有中断引脚我没用上ps:起因是刚开始调试的时候看到有
网友说最少三条线就可以工作,所以为了调通它,所以没接。
刚接好esp8266-f12的中断引脚后
Mem: 14904K used, 7792K free, 48K shrd, 596K buff, 6352K cached
CPU: 8% usr 8% sys 0% nic 83% idle 0% io 0% irq 0% sirq
Load average: 0.80 0.30 0.11 1/37 131
PID PPID USER STAT VSZ %VSZ %CPU COMMAND
131 121 root R 1488 7% 8% top
76 2 root IW 0 0% 8% [kworker/0:3-pm]
121 1 root S 1500 7% 0% -sh
1 0 root S 1492 7% 0% init
100 1 root S 1484 7% 0% /sbin/syslogd -n
103 1 root S 1480 7% 0% /sbin/klogd -n
73 2 root IW 0 0% 0% [kworker/0:2-pm]
70 2 root SW 0 0% 0% [spi0]
75 2 root IW< 0 0% 0% [kworker/0:1H-mm]
8 2 root SW 0 0% 0% [kdevtmpfs]
71 2 root SW 0 0% 0% [spi1]
47 2 root IW 0 0% 0% [kworker/0:1-pm]
7 2 root SW 0 0% 0% [ksoftirqd/0]
14 2 root IW 0 0% 0% [kworker/u2:1-es]
5 2 root IW 0 0% 0% [kworker/u2:0-ev]
82 2 root SW 0 0% 0% [jbd2/mmcblk0p2-]
2 0 root SW 0 0% 0% [kthreadd]
66 2 root SW 0 0% 0% [kswapd0]
127 2 root SW 0 0% 0% [kspiirqd/eagle]
4 2 root IW< 0 0% 0% [kworker/0:0H-kb]
127 2 root SW 0 0% 0% [kspiirqd/eagle]
直接干到零。总CPU在8%
播放音乐时间恢复正常ps:耳机没带,听不了..
破案了,就是没有中断导致的
破案了,我隐约还是觉得buildrot登陆界面没有输出到串口,所以在这个方向找,找到这个帖子的评论
荔枝派开发板控制台输出到LCD屏和PC串口,在进入内核时,电脑上xshell不再有输出,也不响应键盘输入
https://whycan.com/t_4930.html#p49896
U-Boot SPL 2018.01-05679-g013ca457fd-dirty (Feb 21 2023 - 10:56:28)
DRAM: 32 MiB
Trying to boot from MMC1
U-Boot 2018.01-05679-g013ca457fd-dirty (Feb 21 2023 - 10:56:28 +0800) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM: 32 MiB
MMC: SUNXI SD/MMC: 0
In: serial@1c25000
Out: serial@1c25000
Err: serial@1c25000
Net: No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot: 0
reading zImage
4395888 bytes read in 228 ms (18.4 MiB/s)
reading suniv-f1c100s-licheepi-nano.dtb
3607 bytes read in 25 ms (140.6 KiB/s)
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Device Tree to 816fc000, end 816ffe16 ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.7.1-Lite200 (aqi@aqi-Apir) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11), GNU ld (Linaro_Binutil3
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Lichee Pi Nano
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 21684K/32768K available (7168K kernel code, 226K rwdata, 1688K rodata, 1024K init, 246K bss, 11084K reserved, 0)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x2a0/0x498 with crng_init=0
[ 0.000047] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000134] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000625] Console: colour dummy device 80x30
[ 0.001285] printk: console [tty0] enabled
[ 0.001379] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070314] pid_max: default: 32768 minimum: 301
[ 0.070886] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.071005] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.072930] CPU: Testing write buffer coherency: ok
[ 0.074807] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076131] devtmpfs: initialized
[ 0.080892] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.081062] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.081421] pinctrl core: initialized pinctrl subsystem
[ 0.082872] thermal_sys: Registered thermal governor 'step_wise'
[ 0.084241] NET: Registered protocol family 16
[ 0.085875] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.088152] cpuidle: using governor menu
[ 0.136401] SCSI subsystem initialized
[ 0.136848] usbcore: registered new interface driver usbfs
[ 0.137092] usbcore: registered new interface driver hub
[ 0.137366] usbcore: registered new device driver usb
[ 0.137836] pps_core: LinuxPPS API ver. 1 registered
[ 0.137920] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.138072] PTP clock support registered
[ 0.138623] Advanced Linux Sound Architecture Driver Initialized.
[ 0.140808] clocksource: Switched to clocksource timer
[ 0.172843] NET: Registered protocol family 2
[ 0.174522] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.174715] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.174845] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.174935] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.175258] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.175383] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.175972] NET: Registered protocol family 1
[ 0.177581] RPC: Registered named UNIX socket transport module.
[ 0.177696] RPC: Registered udp transport module.
[ 0.177748] RPC: Registered tcp transport module.
[ 0.177792] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.180239] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.182175] Initialise system trusted keyrings
[ 0.182863] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.206657] NFS: Registering the id_resolver key type
[ 0.206817] Key type id_resolver registered
[ 0.206872] Key type id_legacy registered
[ 0.323768] Key type asymmetric registered
[ 0.323885] Asymmetric key parser 'x509' registered
[ 0.324109] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 0.324200] io scheduler mq-deadline registered
[ 0.324252] io scheduler kyber registered
[ 0.335775] suniv-f1c100s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.533097] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.539094] suniv-f1c100s-pinctrl 1c20800.pinctrl: supply vcc-pe not found, using dummy regulator
[ 0.541013] printk: console [ttyS0] disabled
[ 0.541269] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 21, base_baud = 6250000) is a 16550A
[ 0.978840] printk: console [ttyS0] enabled
[ 0.989589] SCSI Media Changer driver v0.25
[ 0.995496] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.002234] ehci-platform: EHCI generic platform driver
[ 1.007765] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.014190] ohci-platform: OHCI generic platform driver
[ 1.019856] usbcore: registered new interface driver usb-storage
[ 1.026641] udc-core: couldn't find an available UDC - added [g_cdc] to list of pending drivers
[ 1.035784] i2c /dev entries driver
[ 1.040705] suniv-f1c100s-pinctrl 1c20800.pinctrl: supply vcc-pf not found, using dummy regulator
[ 1.077483] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 1.087017] usbcore: registered new interface driver usbhid
[ 1.092795] usbhid: USB HID core driver
[ 1.113045] NET: Registered protocol family 17
[ 1.117793] Key type dns_resolver registered
[ 1.123475] Loading compiled-in X.509 certificates
[ 1.140477] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.158879] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.165831] ALSA device list:
[ 1.168878] #0: Loopback 1
[ 1.172387] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.181196] cfg80211: failed to load regulatory.db
[ 1.186966] Waiting for root device /dev/mmcblk0p2...
[ 1.228428] mmc0: host does not support reading read-only switch, assuming write-enable
[ 1.238974] mmc0: new high speed SDHC card at address b36b
[ 1.246444] mmcblk0: mmc0:b36b CBADS 29.5 GiB
[ 1.255301] mmcblk0: p1 p2 p3
[ 1.346613] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 1.355050] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 1.370299] devtmpfs: mounted
[ 1.378029] Freeing unused kernel memory: 1024K
[ 1.382839] Run /sbin/init as init process
[ 1.884762] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 2.003050] random: fast init done
[ 2.503966] random: dd: uninitialized urandom read (512 bytes read)
Welcome to Buildroot
buildroot login: root
# ls
# cd /
# ls
bin lib media proc sbin usr
dev lib32 mnt root sys var
etc linuxrc opt run tmp
#
U-Boot SPL 2018.01-05679-g013ca457fd-dirty (Feb 21 2023 - 08:54:47)
DRAM: 32 MiB
Trying to boot from MMC1
U-Boot 2018.01-05679-g013ca457fd-dirty (Feb 21 2023 - 08:54:47 +0800) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Lichee Pi Nano
DRAM: 32 MiB
MMC: SUNXI SD/MMC: 0
In: serial@1c25000
Out: serial@1c25000
Err: serial@1c25000
Net: No ethernet found.
starting USB...
No controllers found
Hit any key to stop autoboot: 0
reading zImage
4395888 bytes read in 228 ms (18.4 MiB/s)
reading suniv-f1c100s-licheepi-nano.dtb
3607 bytes read in 25 ms (140.6 KiB/s)
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Device Tree to 816fc000, end 816ffe16 ... OK
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.7.1-Lite200 (aqi@aqi-Apir) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11), GNU ld (Linaro_Binutil3
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Lichee Pi Nano
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: console=ttyS0,115200 panic=5 console=tty0 rootwait root=/dev/mmcblk0p2 earlyprintk rw
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 21684K/32768K available (7168K kernel code, 226K rwdata, 1688K rodata, 1024K init, 246K bss, 11084K reserved, 0)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x2a0/0x498 with crng_init=0
[ 0.000047] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000134] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000624] Console: colour dummy device 80x30
[ 0.001284] printk: console [tty0] enabled
[ 0.001379] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070313] pid_max: default: 32768 minimum: 301
[ 0.070885] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.071004] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.072926] CPU: Testing write buffer coherency: ok
[ 0.074806] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076128] devtmpfs: initialized
[ 0.080887] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.081060] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.081414] pinctrl core: initialized pinctrl subsystem
[ 0.082864] thermal_sys: Registered thermal governor 'step_wise'
[ 0.084226] NET: Registered protocol family 16
[ 0.085862] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.088143] cpuidle: using governor menu
[ 0.136401] SCSI subsystem initialized
[ 0.136856] usbcore: registered new interface driver usbfs
[ 0.137086] usbcore: registered new interface driver hub
[ 0.137361] usbcore: registered new device driver usb
[ 0.137838] pps_core: LinuxPPS API ver. 1 registered
[ 0.137920] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.138077] PTP clock support registered
[ 0.138611] Advanced Linux Sound Architecture Driver Initialized.
[ 0.140773] clocksource: Switched to clocksource timer
[ 0.172742] NET: Registered protocol family 2
[ 0.174433] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.174621] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.174745] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.174835] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.175164] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.175289] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.175879] NET: Registered protocol family 1
[ 0.177485] RPC: Registered named UNIX socket transport module.
[ 0.177601] RPC: Registered udp transport module.
[ 0.177649] RPC: Registered tcp transport module.
[ 0.177694] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.180149] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.182071] Initialise system trusted keyrings
[ 0.182770] workingset: timestamp_bits=30 max_order=13 bucket_order=0
[ 0.206511] NFS: Registering the id_resolver key type
[ 0.206678] Key type id_resolver registered
[ 0.206739] Key type id_legacy registered
[ 0.316063] Key type asymmetric registered
[ 0.316179] Asymmetric key parser 'x509' registered
[ 0.316404] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[ 0.316499] io scheduler mq-deadline registered
[ 0.316552] io scheduler kyber registered
[ 0.328072] suniv-f1c100s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.525484] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.531615] suniv-f1c100s-pinctrl 1c20800.pinctrl: supply vcc-pe not found, using dummy regulator
[ 0.533399] printk: console [ttyS0] disabled
[ 0.533651] 1c25000.serial: ttyS0 at MMIO 0x1c25000 (irq = 21, base_baud = 6250000) is a 16550A
[ 0.971282] printk: console [ttyS0] enabled
[ 0.982201] SCSI Media Changer driver v0.25
[ 0.987937] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.994678] ehci-platform: EHCI generic platform driver
[ 1.000212] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.006640] ohci-platform: OHCI generic platform driver
[ 1.012398] usbcore: registered new interface driver usb-storage
[ 1.019054] udc-core: couldn't find an available UDC - added [g_cdc] to list of pending drivers
[ 1.028208] i2c /dev entries driver
[ 1.033255] suniv-f1c100s-pinctrl 1c20800.pinctrl: supply vcc-pf not found, using dummy regulator
[ 1.069916] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 1.079437] usbcore: registered new interface driver usbhid
[ 1.085214] usbhid: USB HID core driver
[ 1.105329] NET: Registered protocol family 17
[ 1.110131] Key type dns_resolver registered
[ 1.115812] Loading compiled-in X.509 certificates
[ 1.132901] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.151433] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.158317] ALSA device list:
[ 1.161478] #0: Loopback 1
[ 1.165110] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.173949] cfg80211: failed to load regulatory.db
[ 1.179628] Waiting for root device /dev/mmcblk0p2...
[ 1.218414] mmc0: host does not support reading read-only switch, assuming write-enable
[ 1.228950] mmc0: new high speed SDHC card at address b36b
[ 1.236413] mmcblk0: mmc0:b36b CBADS 29.5 GiB
[ 1.245266] mmcblk0: p1 p2 p3
[ 1.328416] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 1.336858] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 1.352136] devtmpfs: mounted
[ 1.359742] Freeing unused kernel memory: 1024K
[ 1.364568] Run /sbin/init as init process
[ 1.821611] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 1.940876] random: fast init done
[ 2.450550] random: dd: uninitialized urandom read (512 bytes read)
[ 210.383779] random: crng init done
到这里就停止了,没有buildroot文件系统
u-boot和内核,文件系统都是按照教程做的
终于出现网卡驱动了,记录这开心时刻
root@bai-Aspire-E1-421:~# insmod /opt/esp8089-spi.ko
[ 42.995608] esp8089_spi: loading out-of-tree module taints kernel.
[ 43.029092] esp8089_spi: EAGLE DRIVER VER bdf5087c3deb
[ 43.833820] esp8089_spi: esp_spi_dummy_probe enter
[ 43.838886] esp8089_spi: register board OK
[ 43.842986] esp8089_spi: sem_timeout = 0
[ 44.893907] esp8089_spi: ESP8089 power up OK
[ 44.898692] esp8089_spi: esp_spi_probe ENTER
[ 44.902975] esp8089_spi: esp_setup_spi
[ 44.964295] esp8089_spi: sif_spi_protocol_init
[ 44.968771] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 44.976475] esp8089_spi: fail_count = 0
[ 45.204078] rx:[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 45.311780] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 45.319370] esp8089_spi: fail_count = 1
[ 45.644075] rx:[0xff],[0x09],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 45.751763] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 45.759357] esp8089_spi: fail_count = 2
[ 46.084070] rx:[0xff],[0xff],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 46.690709] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c8
[ 47.314252] rx:[0xff],[0xff],[0x01],[0x10],[0xff],[0xff],[0x00],[0xff],[0xff]
[ 47.821078] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c1
[ 48.454236] rx:[0xff],[0xff],[0x00],[0x90],[0xff],[0xff],[0x00],[0xff],[0xff]
[ 48.961099] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c3
[ 49.484234] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 49.991063] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c7
[ 50.524240] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 51.031090] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c0
[ 51.554233] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 52.061055] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c3
[ 52.584240] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 53.091090] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 53.624230] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 54.131111] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 54.664240] rx:[0xff],[0x00],[0x25],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 55.171085] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 55.694245] rx:[0xff],[0x00],[0x10],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 56.201107] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 56.724232] rx:[0xff],[0x00],[0x12],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 57.231083] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 57.764232] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 58.271093] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 58.794233] rx:[0xff],[0x00],[0x06],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 59.301120] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 59.824234] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 60.331055] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 60.864231] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 61.371116] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c8
[ 61.914236] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 61.921991] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c1
[ 61.944355] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 61.952111] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c4
[ 61.974350] rx:[0xff],[0x00],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 63.996780] esp8089_spi: esp_pub_init_all
[ 64.000850] esp8089_spi: esp_download_fw
[ 64.029468] random: crng init done
[ 64.899351] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[ 64.899379] esp8089_spi: sif_platform_irq_init enter
[ 64.909597] yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[ 65.205813] esp_host:bdf5087c3deb
[ 65.205813] esp_target: e826c2b3c9fd 57 18202
[ 65.205813]
[ 65.220416] esp_readwrite_file: file /system/lib/modules/test_results filp_or
[ 65.274543] esp8089_spi: first normal exit
[ 65.278726] esp8089_spi: esp_spi_probe EXIT
[ 65.283259] esp8089_spi: sem_timeout = 0
[ 65.287398] esp8089_spi: esp_spi_remove
[ 65.426840] esp8089_spi: esp_spi_probe ENTER
[ 65.431139] esp8089_spi: esp_setup_spi
[ 65.435041] esp8089_spi: sif_spi_protocol_init
[ 65.439490] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 65.447099] esp8089_spi: fail_count = 0
[ 65.714066] rx:[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 65.821777] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 65.829374] esp8089_spi: fail_count = 1
[ 66.154070] rx:[0xff],[0x09],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 66.261776] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c9
[ 66.269372] esp8089_spi: fail_count = 2
[ 66.594069] rx:[0xff],[0xff],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 67.200737] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c8
[ 67.824233] rx:[0xff],[0xff],[0x01],[0x10],[0xff],[0xff],[0x00],[0xff],[0xff]
[ 68.331123] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c1
[ 68.934237] rx:[0xff],[0xff],[0x00],[0x90],[0xff],[0xff],[0x00],[0xff],[0xff]
[ 69.441105] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c3
[ 69.984236] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 70.491122] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c7
[ 71.014240] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 71.521082] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c0
[ 72.044231] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 72.551064] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c3
[ 73.074232] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 73.581106] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 74.114230] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 74.621052] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 75.140385] rx:[0xff],[0x00],[0x25],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 75.647242] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 76.174243] rx:[0xff],[0x00],[0x10],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 76.681080] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 77.224234] rx:[0xff],[0x00],[0x12],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 77.731090] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 78.254234] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 78.761075] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 79.284239] rx:[0xff],[0x00],[0x06],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 79.791082] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 80.324233] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 80.831074] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c5
[ 81.354229] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 81.861037] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c8
[ 82.384233] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 82.392048] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c1
[ 82.424270] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 82.432024] esp8089_spi: /home/bai/software/ESP8089-SPI-master/spi_sif_esp.c4
[ 82.454377] rx:[0xff],[0x00],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 84.476548] esp8089_spi: esp_pub_init_all
[ 84.480583] esp8089_spi: esp_download_fw
[ 85.597536] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[ 85.597563] esp8089_spi: sif_platform_irq_init enter
[ 85.607778] yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[ 85.725871] ------------[ cut here ]------------
[ 85.735762] WARNING: CPU: 0 PID: 194 at kernel/irq/manage.c:524 enable_irq+00
[ 85.743483] Unbalanced enable for IRQ 65
[ 85.747396] Modules linked in: esp8089_spi(O+)
[ 85.751859] CPU: 0 PID: 194 Comm: kspiirqd/eagle Tainted: G O 46
[ 85.760872] Hardware name: Allwinner suniv Family
[ 85.765623] [<c010e544>] (unwind_backtrace) from [<c010b52c>] (show_stack+0x)
[ 85.773370] [<c010b52c>] (show_stack) from [<c0116918>] (__warn+0xc0/0xf0)
[ 85.780241] [<c0116918>] (__warn) from [<c01165ac>] (warn_slowpath_fmt+0x38/)
[ 85.787723] [<c01165ac>] (warn_slowpath_fmt) from [<c0148498>] (enable_irq+0)
[ 85.795813] [<c0148498>] (enable_irq) from [<bf000230>] (spi_irq_thread+0x48)
[ 85.804822] [<bf000230>] (spi_irq_thread [esp8089_spi]) from [<c012ece8>] (k)
[ 85.813448] [<c012ece8>] (kthread) from [<c0107e88>] (ret_from_fork+0x14/0x2)
[ 85.820655] ---[ end trace cced0687c4545830 ]---
[ 85.938008] esp8089_spi: esp_spi_probe EXIT
[ 85.942528] esp8089_spi: esp_spi_init err 0
[ 85.954343] esp_host:bdf5087c3deb
[ 85.954343] esp_target: e826c2b3c9fd 57 18202
[ 85.954343]
root@bai-Aspire-E1-421:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defau0
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default ql0
link/ether 18:fe:34:61:d0:57 brd ff:ff:ff:ff:ff:ff
之前按照教程后能够互相ping成功但是连不上外网
在群里问也得不到回应
所幸自己瞎折腾
成功了
首先荔枝派nano端:
insmod g_ether.ko 装载驱动
ifconfig usb0 192.168.xxx.y :x是你主机ip,y随便一个。这一步是分配ip给nano,必须是跟主机同一网络端
ubnuntu端:
此时点击你的右上角网络会发现多了一个以太网
1/点击有线设置
2/usb以太网此时为正在连接,点击设置
3/ipv4跟ipv6方式均设置为已与其他计算机共享
4/点击应用
稍微再等待一会,再点击设置
你会发现详细信息里ipv4有一串地址xxx.xxx.xxx.xx1,这是重点重点!!记录下来
荔枝派nano端:
rmmod g_ether.ko
insmod g_ether.ko
ifconfig usb0 xxx.xxx.xxx.xxx2 /x为刚才你记录的ip地址,这一步是分配ip给nano.上一步就是为了得到这个xxx.xxx.xxx.xx1
route add default gw xxx.xxx.xxx.xx1 /x为刚才你记录的ip地址
好了,可以愉快的联网冲浪了
问题又又又来了
ERROR: No hash found for gcc-8.4.0.tar.xz
make[1]: *** [package/pkg-generic.mk:171:/home/bai/software/LicheePi_nano_SDK/buildroot-2020.02.4/buildroot-2020.02.4/output/build/host-gcc-final-8.4.0/.stamp_downloaded] 错误 1
make: *** [Makefile:84:_all] 错误 2
嗯?这不是昨晚的报错吗?
重复昨晚的操作,发现错误依旧
认真审题,发现host-gcc-final-8.4.0
好吧进入那个目录发现只有host-gcc-initial-8.4.0
重命名host-gcc-initial-8.4.0为host-gcc-final-8.4.0
编译!又开始跑了
后面没报错了。
编译成功
搞定,下班!
第二天,我继续编译出现ERROR: No hash found for linux-5.4.45.tar.xz
这豆笔源码
我原本想再之前的文件中添加hash值,发现这一次不一样,不是gcc而是linux
而且后面的错误是output/build/linux-headers-5.4.45/.stamp_downloaded] 错误 1
headers
随后在package中寻找head,找到linux-headers.hash
发现这个内容../../linux/linux.hash指向了linux/linux.hash文件
打开赫然发现了# From https://www.kernel.org/pub/linux/kernel/v5.x/sha256sums.asc
sha256 103f039f34a9009c42ea643b4f473bda6bb9607d5ad7f63b56b3e2351615fe2e linux-5.4.45.tar.xz
打开网址发现hash值没错,应该是../../linux/linux.hash有问题
删除
添加hash值
解决,继续编译(我是萌新,不知道怎么指向linux.hash。用In链接,还是修改../../linux/linux.hash)
如题
方法有两种
一:https://blog.csdn.net/m0_55733070/article/details/117964897
(当初百度时一堆网站引用他的帖子,没啥用)
二:
1,将你主目录中的/package/gcc/gcc-initial/gcc-initial.hash 删除
2,检查/package/gcc/gcc.hash是否有gcc-8.4.0.tar.xz hash值,没有就在https://gcc.gnu.org/pub/gcc/releases/gcc-8.4.0/sha512.sum粘贴过去
3,终端执行sudo ln -s 你的目录/package/gcc/gcc.hash 你的目录/package/gcc/gcc-initial/gcc-initial.hash
其实就是链接一下
搞定下班
如果还是不行,问问其他人吧。
页次: 1