導航:首頁 > 編程系統 > linuxdtb文件

linuxdtb文件

發布時間:2023-05-31 22:46:19

⑴ 如何在ARM linux上使用FDT和initrd

這文章算是最近工作的備忘。
FDT是ARM
Linux最新的設備驅動程序信息表,使用FDT的內核,就不用像過去的內核那樣,一個板子加一個mach的C文件,所有的設備信息可以記錄在一個樹狀信息文件裡面。

目前這方面資料比較少,我以AM335x處理器為例概括一下FDT的使用:

FDT僅僅是一個信息的目錄和參數表,要使用某個功能內核中還必須有相應的驅動程序代碼
FDT的源文件位置在:arch/arm/boot/dts,例如,TI的Beagle bone black,源文件是arch/arm/boot/dts/am335x_boneblack.dts
FDT在make ARCH=arm的時候就會自動生成,也可用make ARCH=arm
dtbs來生成,例如TI的Beagle bone black生成的文件是arch/arm/boot/dts/am335x_boneblack.dtb,這是一個二進制文件
要想新增你自定義的FDT,請修改arch/arm/boot/dts/Makefile,並在相應的Kconfig中增加config選項,例如,TI的Beagle
bone black,Kconfig的位置在arch/arm/mach-omap2/Kconfig
FDT的dtb文件由u-boot傳遞給內核,u-boot必須把這個文件拷貝到內核解壓地址之後的某個位置,確保內核解壓的時候不會覆蓋,然後使用「bootm
[內核地址] - [dtb地址]」來啟動內核
如果dtb文件不正確,對於3.10以上的內核,可能什麼顯示都沒有,3.8內核,可能就顯示到Uncompressing kernel......done
FDT的編寫規則說明在Documentation/devicetree/bindings,不同的設備有相應的txt文件說明,其中的「compatible」可以作為關鍵字搜索驅動程序的源文件,例如,AM335x的GPIO,用「ti,omap4-gpio」為關鍵字,可以找到其代碼位於drivers/gpio/gpio-omap.c
FDT可以包含子文件,比如am335x_boneblack.dts就包含了am33xx.dtsi,am335x-bone-common.dtsi

以一個例子來說明編寫規則,我的板子上,I2C0上掛了一個音頻CODEC,其地址是0x18,型號是TLV320AIC3104IRHBT。

先找到i2c0節點的位置,這在arch/arm/boot/dts/am33xx.dtsi中:
i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"disabled";
};

要在這個節點上掛東西,可以直接在am33xx.dtsi中掛,可以寫成這樣:

i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"okay";

tlv320aic3x: tlv320aic3x@18 {

compatible = "ti,tlv320aic3x";

reg = <0x18>;

status = "okay";

AVDD-supply = <&ldo4_reg>;

IOVDD-supply = <&ldo4_reg>;

DRVDD-supply = <&ldo4_reg>;

DVDD-supply = <&ldo4_reg>;

};
};

其中compatible字串「ti,tlv320aic3x」是在Documentation/devicetree/bindings裡面全文搜索「tlv320aic」獲得的,「tlv320aic3x:
tlv320aic3x@18」遵循的是「標識符:名稱@地址」的格式,前面的「i2c0:
i2c@44e0b000」也是這個格式。這里的標識符可以在包含這個文件的文件或這個文件的其他位置引用,因此,可以使用arch/arm/boot/dts/am335x-boneblack.dts包含arch/arm/boot/dts/am33xx.dtsi,然後在am335x-boneblack.dts里寫:

&i2c0 {

status = "okay";

tlv320aic3x: tlv320aic3x@18 {

compatible = "ti,tlv320aic3x";

reg = <0x18>;

status = "okay";

AVDD-supply = <&ldo4_reg>;

IOVDD-supply = <&ldo4_reg>;

DRVDD-supply = <&ldo4_reg>;

DVDD-supply = <&ldo4_reg>;

};

};

&i2c0表示引用了i2c0這個標識符,然後把括弧里的內容掛載到標識符下,如果屬性的名字相同,例如status出現兩次,前面是「disabled」後面是「okay」,以後面的為准,引用標識符的次數不受限制。

也許一開始會覺得FDT的工作過程很神秘,但你只要用compatible的字串去全文搜索一下C文件,然後仔細閱讀一下,就會發現很簡單,沒過幾分鍾你就可以自定義FDT節點的屬性了。反倒是這些操作過程我沒找到什麼文檔說,比較頭痛,所以我把這些寫出來,希望能給大家幫助。

下面說說initrd,initrd的用處是給內核一個初始的基本文件系統,用來載入內核模塊之類的東西。很多人覺得嵌入式系統不需要initrd,也可以把initrd作為最終的根文件系統。我用initrd是用來校驗真正的根文件系統,因為在嵌入式設備上,無法預測用戶到底什麼時候關機,可能會造成文件系統問題。

initrd可以用buildroot,像製作正常文件系統一樣做,最後把根下的linuxrc換成一個例如下面這樣的文件:

#!/bin/sh

/bin/echo Now Check SD Card

/sbin/fsck.ext4 /dev/mmcblk0p5

雖然Documentation/initrd.txt裡面說,內核會執行initrd裡面的/sbin/init,但在我用的linux-3.8.13上,init/do_mounts_initrd.c裡面,執行的是/linuxrc,不知道是不是文檔沒有更新過來。具體的調用順序是,kernel_init(init/main.c)
> kernel_init_freeable(init/main.c)
> prepare_namespace(init/do_mounts.c)
> initrd_load(init/do_mounts_initrd.c) > handle_initrd
(init/do_mounts_initrd.c)。

在使用initrd的時候有幾點需要注意的:

不建議在initrd上掛載別的東西,會引起未知的問題,貌似看到個文章說這個,找不到了
因為上面的這條,而且在initrd的時候,內核還沒有掛載devtmpfs,因此建議使用靜態設備節點,以AM335x為例(內核參數console=/dev/ttyO0,115200n8),必須的節點有:

/dev/null

/dev/console

/dev/ttyO0

這些節點可以用fakeroot之後mknod在buildroot的output/target/dev里創建,除了/dev/console,buildroot會自己創建,其他也可以寫到buildroot的system/device_table.txt裡面讓buildroot自動創建:

#

/dev/null
c 666 0 0
1 3
-
-
-

/dev/ttyO0 c 600
0 0 250
0
-
-
-

如果你用的是Atmel的處理器,上面的ttyO0可能是ttyS0,如果是三星的,可能是ttySAC0,而且major和minor也會不一樣,請自行解決。如果你像我一樣要檢驗SD卡,那就還必須加上SD卡的分區對應的節點。

/linuxrc可以是個程序也可以是個腳本,腳本的話,命令寫絕對路徑,而且記得把/linuxrc的mode改為755

使用initrd只需要用u-boot把buildroot製作的文件系統映像拷貝到內存里,然後傳遞initrd=[地址],[容量]這樣的參數給內核,例如initrd=0x81300000,8M,最終的root參數可以不變,例如root=/dev/mmcblk0p5,這表示最終的root是SD卡上擴展分區中的第一個邏輯分區。給兩個內核參數的例子:

console=ttyO0,115200n8 root=/dev/mmcblk0p5 initrd=0x81300000,8M vram=16M
consoleblank=0
console=ttyO0,115200n8 initrd=0x81300000,8M root=/dev/nfs rw
nfsroot=192.168.5.226:/home/c/nfsroot
ip=192.168.5.222:192.168.5.226:192.168.5.1:255.255.255.0:core335x:eth0:off
vram=16M consoleblank=0

第一個不解釋了,第二個表示使用initrd,同時使用nfsroot。

最後啰嗦一句,使用initrd需要在內核配置里打開支持,這個網上的資料太多了,我就不說在哪裡了。

⑵ 編譯linux內核設備樹文件使用什麼命令

Linux源碼的arch/powerpc/boot/dts/目錄下存放了很多dts文件,可以作為參考文件。另外dtc編譯器在內核回源碼2.6.25版本之後已經答被包含進去。在2.6.26版本之後,生成blob的簡單規則已經加入makefile,如下命令:
$ make ARCH=powerpc canyonlands.dtb

也可以根據自己的硬體修改好dts文件後,用下面類似命令生成dtb文件。
$ dtc -f -I dts -O dtb -R 8 -S 0x3000 test.dts > mpc836x_mds.dtb

$ mkimage -A ppc -O Linux -T flat_dt -C none -a 0x300000 -e 0 -d mpc836x_mds.dtb mpc836x_mds.dtu

⑶ Linux觸摸屏驅動中什麼時候會調用suspend這個函數

android系統摁下電源鍵後會讓系統進入休眠以達到節電的目的。內核驅動中和休眠相關的就是suspend和resume函數。

suspend函數用於休眠,resume函數用於喚醒。下面分析驅動中的這兩個函數是如何被調用到的。

驅動部分:

首先需要分析驅動的注冊過程,較新的內核都是採用DTS方式來取代在內核中直接定義platform_device數據結構的注冊方式,本文是基於DTS機制的內核來分析。

proct對應的dts文件在編譯時被編譯為dtb文件,uboot在啟動時候會將其地址傳給內核,內核在啟動過程中會去解析,具體解析是在start_kernel()->setup_arch() --> unflatten_device_tree()中具體分析可以參考網上,解析的最終結果會存放在allnodes地址處,這個allnodes隨後在machine的init函數
中被使用,init函數中會根據allnodes中的節點數據組合成platform_device數據結構,然後將其注冊到platform匯流排上,下面簡要分析一下並重點關注這些初始化過程中和
pm相關的初始化。

我參與的項目中machine的init函數就是via_init_machine函數,在這個函數中就是調用了of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL)這個函數來解析allnodes的。of_platform_populate是系統提供的介面。下面分析這個介面的實現:

[html] view plain
int of_platform_populate(struct device_node *root,
const struct of_device_id *matches,
const struct of_dev_auxdata *lookup,
struct device *parent)
{
struct device_node *child;
int rc = 0;

root = root ? of_node_get(root) : of_find_node_by_path("/");
if (!root)
return -EINVAL;

for_each_child_of_node(root, child) {
rc = of_platform_bus_create(child, matches, lookup, parent, true);
if (rc)
break;
}

of_node_put(root);
return rc;
}
root最後就是取到的根節點,然後其作為參數傳遞給of_platform_bus_create,of_platform_device_create_pdata的實現如下:

[html] view plain
static int of_platform_bus_create(struct device_node *bus,
const struct of_device_id *matches,
const struct of_dev_auxdata *lookup,
struct device *parent, bool strict)
{
const struct of_dev_auxdata *auxdata;
struct device_node *child;
struct platform_device *dev;
const char *bus_id = NULL;
void *platform_data = NULL;
int rc = 0;

/* Make sure it has a compatible property */
if (strict && (!of_get_property(bus, "compatible", NULL))) {
pr_debug("%s() - skipping %s, no compatible prop\n",
__func__, bus->full_name);
return 0;
}

auxdata = of_dev_lookup(lookup, bus);
if (auxdata) {
bus_id = auxdata->name;
platform_data = auxdata->platform_data;
}

if (of_device_is_compatible(bus, "arm,primecell")) {
of_amba_device_create(bus, bus_id, platform_data, parent);
return 0;
}

dev = of_platform_device_create_pdata(bus, bus_id, platform_data, parent);
if (!dev || !of_match_node(matches, bus))
return 0;

for_each_child_of_node(bus, child) {
pr_debug(" create child: %s\n", child->full_name);
rc = of_platform_bus_create(child, matches, lookup, &dev->dev, strict);
if (rc) {
of_node_put(child);
break;
}
}
return rc;
}
根據傳入參數,我們這里直接分析of_platform_device_create_padate函數,如下:

[html] view plain
struct platform_device *of_platform_device_create_pdata(
struct device_node *np,
const char *bus_id,
void *platform_data,
struct device *parent)
{
struct platform_device *dev;

if (!of_device_is_available(np))
return NULL;

dev = of_device_alloc(np, bus_id, parent);
if (!dev)
return NULL;

#if defined(CONFIG_MICROBLAZE)
dev->archdata.dma_mask = 0xffffffffUL;
#endif
dev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
dev->dev.bus = &platform_bus_type;
dev->dev.platform_data = platform_data;

/* We do not fill the DMA ops for platform devices by default.
* This is currently the responsibility of the platform code
* to do such, possibly using a device notifier
*/

if (of_device_add(dev) != 0) {
platform_device_put(dev);
return NULL;
}

return dev;
}

of_platform_device_create_padate->of_device_alloc->platform_device_alloc

便在platform_device_alloc函數中進行進行alloc和初始化了,實現如下:

[html] view plain
struct platform_device *platform_device_alloc(const char *name, int id)
{
struct platform_object *pa;

pa = kzalloc(sizeof(struct platform_object) + strlen(name), GFP_KERNEL);
if (pa) {
strcpy(pa->name, name);
pa->pdev.name = pa->name;
pa->pdev.id = id;
device_initialize(&pa->pdev.dev);
pa->pdev.dev.release = platform_device_release;
arch_setup_pdev_archdata(&pa->pdev);
}

return pa ? &pa->pdev : NULL;
}
可以看到有個device_initialize,這裡面對pdev.dev做一些列的初始化,其中有一個函數就是device_pm_init,這個函數就是我們一直關心的device相關的pm函數,具體實現如下:

[html] view plain
void device_pm_init(struct device *dev)
{
dev->power.is_prepared = false;
dev->power.is_suspended = false;
init_completion(&dev->power.completion);
complete_all(&dev->power.completion);
dev->power.wakeup = NULL;
spin_lock_init(&dev->power.lock);
pm_runtime_init(dev);
INIT_LIST_HEAD(&dev->power.entry);
dev->power.power_state = PMSG_INVALID;
}

可以看見它對device和功耗相關的數據做了一些初始化,我們這里先重點關注下dev->power.entry,初始化一個鏈表頭,所以他/它很有可能會在後面加到某個鏈表裡面去,而那個鏈表應該是用來保存所有的device用的。系統中所有的platform_device都是通過這種方式注冊到系統中的,那麼應該所有的platform_device都會初始化一個dev->power.entry,如果到時候把所有的dev->power.entry都添加到某個鏈表上去,那麼系統到時候查詢的時候只要找到這個list head就可以找到所有的platform_device了。嗯,不過這是我們的猜測。我們接下去分析來驗證下。

platform_device通過alloc之後已經初始化好了,那麼接下去就可以添加到系統中了,所以我們再回頭看of_platform_device_create_pdata的實現。
函數在of_device_alloc之後把dev->dev.bus賦值給了platform_bus_type,接著就調用了of_device_add函數,在of_device_add函數中最後通過device_add添加到了bus上,但是device_add中有個函數需要我們關系,就是device_pm_add(dev),實現如下:

[html] view plain
void device_pm_add(struct device *dev)
{
pr_debug("PM: Adding info for %s:%s\n",
dev->bus ? dev->bus->name : "No Bus", dev_name(dev));
mutex_lock(&dpm_list_mtx);
if (dev->parent && dev->parent->power.is_prepared)
dev_warn(dev, "parent %s should not be sleeping\n",
dev_name(dev->parent));
list_add_tail(&dev->power.entry, &dpm_list);
dev_pm_qos_constraints_init(dev);
mutex_unlock(&dpm_list_mtx);
}

可以看到這里list_add_tail(&dev->power.entry, &dpm_list);這就驗證了我們之前的猜測。所有注冊到系統中的設備,最終都是會添加到dpm_list這條鏈表上。

那麼系統在休眠的時候是如何通過dmp_list這表鏈表來suspend設備的呢?接下去就是我們要分析的電源管理部分內容。

系統電源部分:
電源管理相關文件在kernel/power目錄下,前面已經分析到。系統中注冊的設備都是會添加到dmp_list這條鏈表上的。那麼睡眠的時候系統應該是會查找dmp_list這條鏈表,
然後通過這條鏈表依次去查到對應的driver,然後調用driver中的suspend方法。下面我們來驗證。

2.在suspend會輪詢bus下的driver,然後一次調用到driver->pm->suspend方法,然後進入休眠。

3.state_store->pm_suspend->enter_state->suspend_devices_and_enter->dpm_suspend_start->dpm_suspend->device_suspend->__device_suspend->pm_op->(ops->suspend)

⑷ ov5693可以用什麼代替

ov5693可以用OV5640代替,根據OV5693的設置,設置了OV5640的選項。此外由於需要修余晌磨改extlinux.config中的啟動dtb文件,因此根據make文件添加謹宴boot options選豎斗項。

⑸ 斐訊n1開機卡在android

GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;

TE: 257051

BL2 Built : 11:58:42, May 27 2017.

gxl gc3c9a84 - xiaobo.gu@droid05

set vdd cpu_a to 1120 mv

set vdd cpu_b to 1050 mv

set vddee to 1000 mv

Board ID = 4

CPU clk: 1200MHz

DQS-corr enabled

DDR scramble enabled

DDR3 chl: Rank0+1 [url=home.php?mod=space&uid=162986]@[/url] 912MHz - PASS

Rank0: 1024MB(auto)-2T-13

Rank1: 1024MB(auto)-2T-13

DataBus test pass!

AddrBus test pass!

-s

Load fip header from eMMC, src: 0x0000c200, des: 0x01400000, size: 0x00004000

aml log : R2048 check pass!

New fip structure!

Load bl30 from eMMC, src: 0x00010200, des: 0x01700000, size: 0x0000d600

aml log : R2048 check pass!

Load bl31 from eMMC, src: 0x00020200, des: 0x01700000, size: 0x0002c600

aml log : R2048 check pass!

Load bl33 from eMMC, src: 0x00050200, des: 0x01700000, size: 0x00053400

aml log : R2048 check pass!

NOTICE: BL3-1: v1.0(release):a625749

NOTICE: BL3-1: Built : 11:25:15, Aug 25 2017

[BL31]: GXL CPU setup!

NOTICE: BL31: BL33 decompress pass

mpu_config_enable:ok

[Image: gxl_v1.1.3243-377db0f 2017-09-07 11:28:58 qiufang.dai@droid07]

OPS=0x04

8d 85 8 c5 d3 cb 99 9e 8c aa b0 61 [0.845055 Inits done]

secure task start!

high task start!

low task start!

ERROR: Error initializing runtime service opteed_fast

U-Boot 2015.01-00010-gfe36fb9 (Mar 02 2018 - 19:00:28)

DRAM: 2 GiB

Relocation Offset is: 76ed9000

register usb cfg[0][1] = 0000000077f5d330

[CANVAS]canvas init

vpu: error: vpu: check dts: FDT_ERR_BADMAGIC, load default parameters

vpu: clk_level = 7

vpu: set clk: 666667000Hz, readback: 666660000Hz(0x300)

vpu: vpu_clk_gate_init_off

vpp: vpp_init

MMC: aml_priv->desc_buf = 0x0000000073ed9640

aml_priv->desc_buf = 0x0000000073edb960

SDIO Port B: 0, SDIO Port C: 1

emmc/sd response timeout, cmd8, status=0x1ff2800

emmc/sd response timeout, cmd55, status=0x1ff2800

init_part() 293: PART_TYPE_AML

[mmc_init] mmc init success

dtb magic 71b104da

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

start dts,buffer=0000000073ede1b0,dt_addr=0000000073ee91b0

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

parts: 10

00: logo 0000000002000000 1

01: recovery 0000000002000000 1

02: rsv 0000000000800000 1

03: tee 0000000000800000 1

04: crypt 0000000002000000 1

05: misc 0000000002000000 1

06: boot 0000000002000000 1

07: system 0000000050000000 1

08: cache 0000000020000000 2

09: data ffffffffffffffff 4

init_part() 293: PART_TYPE_AML

eMMC/TSD partition table have been checked OK!

check pattern success

mmc env offset: 0x27400000

In: serial

Out: serial

Err: serial

reboot_mode=cold_boot

hpd_state=1

[1080p60hz] is invalid for cvbs.

set hdmitx VIC = 16

config HPLL = 2970000

HPLL: 0xc000027b

config HPLL done

j = 4 vid_clk_div = 1

hdmitx: set enc for VIC: 16

HDMITX-DWC addr=0x10004006 rd_data=0x40

Error: HDMITX-DWC exp_data=0xff mask=0x9f

rx version is 2.0 div=10

hdmtix: set audio

hdmitx phy setting done

[store]To run cmd[emmc dtb_read 0x1000000 0x40000]

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

_verify_dtb_checksum()-917: calc 96094b61, store 96094b61

dtb_read()-1039: total valid 2

dtb_read()-1106: do nothing

aml log : R2048 check pass!

Amlogic multi-dtb tool

Multi dtb detected

Multi dtb tool version: v2 .

Support 2 dtbs.

aml_dt soc: gxl platform: p230 variant: 2g

dtb 0 soc: gxl plat: p230 vari: 1g

dtb 1 soc: gxl plat: p230 vari: 2g

Find match dtb: 1

vpp: vpp_pq_load pq val error !!!

Net: Phy 0 not found

dwmac.c9410000amlkey_init() enter!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

Start read misc partition datas!

info->attemp_times = 0

info->active_slot = 0

info->slot_info[0].bootable = 1

info->slot_info[0].online = 1

info->slot_info[1].bootable = 0

info->slot_info[1].online = 0

info->attemp_times = 0

attemp_times = 0

active slot = 0

wipe_data=successful

wipe_cache=successful

upgrade_step=2

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[OSD]load fb addr from dts

[OSD]fb_addr for logo: 0x7f851000

[CANVAS]addr=0x7f851000 width=3840, height=2160

amlkey_init() enter!

amlkey_init() 71: already init!

[EFUSE_MSG]keynum is 4

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[BL31]: tee size: 0

[KM]Error:f[key_manage_query_size]L507:key[deviceid] not programed yet

gpio: pin GPIOAO_2 (gpio 102) value is 1

InUsbBurn

noSof

Hit Enter or space or Ctrl+C key to stop autoboot -- : 0

[imgread]szTimeStamp[2018030720035817]

[imgread]secureKernelImgSz=0xd88800

aml log : R-2048 check pass!

aml log : R2048 check pass!

aml log : R2048 check pass!

ee_gate_off ...

mmc env offset: 0x27400000

Writing to MMC(1)... done

## Booting Android Image at 0x01080000 ...

reloc_addr =73f5e400

done

Kernel command line: buildvariant=user

load dtb from 0x1000000 ......

Amlogic multi-dtb tool

Single dtb detected

Uncompressing Kernel Image ... OK

kernel loaded at 0x01080000, end = 0x021d4598

Loading Ramdisk to 73894000, end 73ec7000 ... OK

Loading Device Tree to 000000001fff2000, end 000000001ffff6b8 ... OK

fdt_instaboot: no instaboot image

Starting kernel ...

uboot time: 3883528 us

[ 0.000000@0] Initializing cgroup subsys cpu

[ 0.000000@0] Initializing cgroup subsys cpuacct

[ 0.000000@0] Linux version 3.14.29-00007-gff93835 (jenkins@slave2) (gcc version 4.9.3 (Ubuntu/Linaro 4.9.3-13ubuntu2) ) #1 SMP PREEMPT Wed Mar 7 19:32:34 CST 2018

[ 0.000000@0] CPU: AArch64 Processor [410fd034] revision 4

[ 0.000000@0] no prop version_code

[ 0.000000@0] bootconsole [earlycon0] enabled

[ 0.000000@0] Reserved memory: incorrect alignment of CMA region

[ 0.000000@0] [amvecm] pq string error !!!

[ 0.187655@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.190157@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

[ 0.198344@0] genirq: Setting trigger mode 8 for irq 241 failed (gic_set_type+0x0/0xbc)

[ 0.206249@0] genirq: Setting trigger mode 8 for irq 242 failed (gic_set_type+0x0/0xbc)

domain-0 init dvfs: 4

[ 0.228385@0] tv_vout: chrdev devno 266338304 for disp

[ 0.242559@0] 1507 node need 400ms

[ 0.927350@0] Initramfs unpacking failed: junk in compressed archive

[ 1.020166@1] mtdoops: mtd device (mtddev=name/number) must be supplied

[ 1.150815@1] amlogic-new-usb3 d0078080.usb3phy: This phy has no usb port

[ 1.157031@1] ATVR driver - init called!

[ 1.166026@0] get_storage_dev return 1

[ 1.305368@1] DI-di_probe: get flag_cma error.

[ 1.307366@1] PPMGRDRV: err: ppmgr_driver_probe called

efuse_pw_en: 0x7

WARNING! efuse bits is disabled

Enable A53 JTAG to AO

[ 1.338469@1] cectx aocec: no hdmirx reg resource

[ 1.338498@1] cectx aocec: no hhi reg resource

[ 1.557834@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTL

[ 1.559838@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTL -> direct -> Ext Spk

[ 1.568717@1] aml_snd_m8_card aml_m8_snd.47: ASoC: no source widget found for LOUTR

[ 1.576247@1] aml_snd_m8_card aml_m8_snd.47: ASoC: Failed to add route LOUTR -> direct -> Ext Spk

相關資源:adb工具+USB調試驅動.zip_usb調試驅動-其它工具類資源-CSDN文庫
點擊閱讀全文
打開CSDN,閱讀體驗更佳

參與評論 請先 登錄 後發表或查看評論
智能家居-斐訊N1安裝篇_ITPaint的博客
2、 開啟ADB調試 N1 用 HDMI 連顯示器,正常開機後用滑鼠點擊斐訊 N1 官方固件的那個版本號 4 次,出現 【ADB調試開啟】的字樣即可,如下圖 3、選擇2,N1降級 4、輸入 .\fastboot.exe reboot 重啟設備 二、刷入官改 1、安裝USB燒...
斐訊N1救磚指南!值得收藏_ITPaint的博客_n1救磚
一、准備工作 1、拆除底部四個螺,在膠墊下面 2、下載刷機工具USB_Burning_Tool 3、 二、刷機流程 1、打開刷機工具導入N1官改固件包,等待載入完成 2、去除 擦除flash 擦除bootloader 兩個勾選。 3、連接USB雙公線,短接如下圖兩個...
斐訊n1卡在android,斐訊N1,看本地高清電影請務必刷coreelec
斐訊N1,看本地高清電影請務必刷coreelec2019-10-11 18:38:5149點贊461收藏94評論kodi很多人都知道也在使用,但是很多朋友並不清楚coreelec下的kodi,和安卓盒子上的kodi到底有什麼區別。以至於很多買了n1的朋友,覺得安卓上面的kodi也一般般。簡單地說:coreelec是一個linux系統,約等於你買了一台電腦,安裝了操作系統,上面只運行kodi,kod...
繼續訪問
斐訊N1變磚終於有救了,使用ddbr恢復官改系統救磚方法
斐訊 N1 使用 ddbr 恢復官改系統 ddbr 官改鏡像下載: 鏈接: https://pan..com/s/1IRPeEeyrdcGyAaaMDfo5kw 提取碼: c388 首先按照步驟製作一個能夠從 U 盤正常啟動的 arm­bian 系統,進入後系統後執行指令 ddbr 首先輸入 b(backup),在進度條開始後即可 Ctrl+C 取消。這樣可以獲取到 ddbr 備份的文件的名稱(不同版本的 Arm­bian 備份出來的包名有不同) 打開 winscp 用 sftp 加你的 ssh
繼續訪問

斐訊N1 – 完美刷機Armbian教程_Jeans Liu的博客
為了讓斐訊N1的各個硬體可以被armbian正常調度,所以需要給斐訊N1適配一套dtb文件。 dtb文件需要隨著內核編譯,所以不同armbian內核版本必須使用配套的dtb文件。 目前斐訊N1的dtb文件已經被armbian收錄到官方源碼庫里,但是使用的時候linux負載會顯...
N1刷Android TV,貧民種草指北 篇二:N1盒子:不談刷機,只談使用!_眠子子 ...
最後,不推薦連滑鼠,藍牙滑鼠成本高。有線麻煩;手機app控制,電視盒子系統聽說可以下載斐訊遙控控制(未測試成功),coreelec可以通過skbu for kodi控制(實測ok,使用也還ok),手機和N1處於同一區域網,打開app自動連接。操作比較全如下圖。
HP伺服器放電後進不了系統,遇到奇怪的問題,armbian系統 reboot之後 卡在開機界面 進不去系統 斷電重啟正常...
GXL:BL1:9ac50e:bb16dc;FEAT:BDFC31BC:0;POC:3;RCY:0;EMMC:0;READ:0;0.0;0.0;CHK:0;TE: 483967BL2 Built : 11:58:42, May 27 2017.gxl gc3c9a84 - xiaobo.gu@droid05set vdd cpu_a to 1120 mvset vdd cpu_b to 1050 ...
繼續訪問
arm linux開機第一屏,小白求助大神T1刷機提示成功,但開機卡在斐訊白屏界面。...
本帖最後由 taczgk 於 2020-5-28 10:42 編輯請大神幫幫忙,我的斐訊T1盒子原來用的YYF系統,刷了W大3.0和3.5系統都是開機卡在斐訊界面,刷YYF系統就卡在安卓機器人界面,打勾救磚模式都提示錯誤:[0x00101004]擦除bootloader/USB限流/設備識別/命令結果返回錯誤,不打勾的話,刷機提示刷機成功,電腦也可以識別,刷完就卡在開機界面,無法聯網無法ADB,求...
繼續訪問
斐訊 N1 降級、刷機及 Armbian 安裝 [2019.7.23]
最前 最近撿垃圾不斷,之前購買了斐訊遺產 K2P(真香,最近刷了 OpenWrt)、T1(刷了電視盒子)和蝸牛星際(刷了黑群暉),最近又撿了台斐訊 N1,主要用於做一些簡單的爬蟲和 Adguard Home 服務。其實原先有過一台樹莓派 3B,但是 emmmm 吃灰了一年,然後二手賣了。雖然近期樹莓派 4 發布了,性能有較大提升,但由於價格的原因,還是 N1 香。刷機過程由於已有的幾篇文章有些內容...
繼續訪問

手機開機卡在android畫面,手機一直停在開機畫面怎麼解決【圖文】
手機我相信人們不會不知道,這幾年手機的發展速度非常地快,不知道大家平時使用手機的過程之中出現一些故障沒有,相信大多數的用戶是碰到過的,但是我相信大多數的手機用戶是不會解決碰到的故障的。大家平時遇到最對的故障是什麼呢?手機開機後一直停在開機界面這種情況相信大家都經歷過吧!今天小編就教教大家如何解決這種故障。手機開機後一直停在開機界面怎麼辦top1:長按電源鍵12S左右重啟手機手機在執行系統升級,刷機...
繼續訪問
最新發布 PHICOMM(斐訊)N1盒子 - recovery模式救磚卡登錄頁LOGO卡1%卡4%卡26%
PHICOMM(斐訊)N1盒子recovery模式救磚卡登錄頁LOGO卡1%卡4%卡26% 卡1%:需要先刷入T1_1.3T47_mod_by_webpad_v3_20180419_2.img救磚包,再重新刷 卡4%:USB供電不足。使用台式機或USB加5V(如帶供電的USB分線器) 卡26%:換不卡的包,如RUSH的包...
繼續訪問
Initramfs unpacking failed:junk in compressed archive
使用kvm創建自定義鏡像後重裝雲主機啟動報錯如下: 解決辦法: 重做鏡像,內存原來的2047MB改成了1024MB,其實也不知道對不對,反正做了好幾遍最後一次好了。
繼續訪問

機頂盒ttl無法輸入_請教大神,機頂盒接TTL進不了uboot模式
本帖最後由 cgl4134 於 2019-12-24 00:13 編輯更新一下... 自己剛開始折騰機頂盒,好多地方都搞不太懂.. 正在學習中..這個uboot 跟刷機包有關系,換了個潛龍的線刷包,就可以進uboot了,,不過現在uboot好像讓我搞壞了, uboot模式下, usb_update system 會失敗..歡迎其他小白交流學習----------------------------...
繼續訪問
關於解決 inittramfs unpacking failed:Decoding failed 報錯
解決辦法 vi /etc/initramfs-tools/initramfs.conf 更改COMPRESS=lz4以COMPRESS=gzip 保存更改 sudo update-initramfs -u
繼續訪問
armbian 斐訊n1_記錄一下斐訊N1盒子刷Armbian的各種坑
最近搞了一個斐訊N1盒子,准備拿來刷Armbian,也就是linux。armbian使用了AArch64架構,也就是說,是armv8,安裝nodejs時注意下載armv8的版本。斐訊N1盒子自帶的系統是安卓系統,版本是V2.2,刷機主要參考的教程在這里:https://www.uselys.com/archives/85.html第一步,需要將盒子的系統版本降級到V2.19,方便後面刷入系統。首先...
繼續訪問
HDMI相關
HDMI相關基礎4.4 與 9.0 差異AVMUTE 的使用hdcp異常檢查 HDCP 交互:檢查 ksv(視頻加密密鑰):HDCP 的內部檢測:顯示模式分析查看是否已連接電視機查看當前顯示模式更改當前顯示解析度查看 EDID 信息查看顯示設備的 EDID 信息查看電視機支持的最佳解析度Android 系統對 HDMI 輸出制式的設置1. 查看當前輸出制式的節點命令:2. 輸出制式在 Framework 層的代碼位置:主要介面說明最優解析度、顏色空間、色深的配置使用 HDMI Bist 模式驗證 HDMI
繼續訪問
斐訊n1刷鴻蒙系統,【總結】在N1上面成功刷入armbian並啟動的步驟
本帖最後由 ruojiner 於 2018-6-25 00:08 編輯用的是Armbian_5.44_S9xxx_Debian_stretch_3.14.29_server_20180601.img.xz這個鏡像。TIM圖片20180624230645.png (48.41 KB, 下載次數: 398)2018-6-24 23:22 上傳TIM圖片20180624230657.png (18.02...
繼續訪問

Linux學習筆記—驅動篇(一)
註:以下驅動只是均以GEC6818開發板為例進行撰寫 要想寫驅動我們得先了解什麼是u-boot 一、什麼是u-boot ? Boot,全稱 Universal Boot Loader,是遵循GPL條款的開放源碼項目。U-Boot的作用是系統引導。U-Boot從FADSROM、8xxROM、PPCBOOT逐步發展演化而來。其源碼目錄、編譯形式與Linux內核很相似,事實上,不少U-Boot源碼就是...
繼續訪問

linux initramfs啟動原理
當linux選擇支持initramfs方式啟動,並且在initramfs source file中選擇了要打包的rootfs路徑以後,則會嘗試以initramfs方式啟動。initramfs方式會對rootfs進行壓縮,和linux kernel打包在同一個鏡像文件中。然後系統載入的時候uboot會把整個鏡像文件都載入到內存中。以該種方式載入的rootfs,是沒辦法修改flash中rootfs的數...
繼續訪問

n1盒子救磚_斐訊N1盒子刷機救磚教程
https://codess.cc/archives/108.html自從斐訊0元購的車翻了之後,咸魚上的斐訊產品也非常多,從路由器到空氣凈化器再到礦機。前幾天我在撕逼魚收了兩個斐訊N1盒子,這東西原來是挖礦的,礦場坍塌倒閉之後,礦老闆們大量甩賣礦機,有的甚至是全新未拆...大概70塊左右包郵的價格,配置一點也不低,比市面上絕大多數的電視盒子的配置都高。最重要的是,它能解碼4K! 解碼真4K! 單...
繼續訪問
Kernel啟動時間優化
1、問題描述 Linux的內核用的是3.14版本。UI層跑的是類似Qt的系統。目前Kernel從啟動到init進程大概需要3.5秒時間,另外到載入U盤需要7.5秒左右時間。 由於Bootloader執行過程很快,所以不是本次需要優化的目標。 系統原始的Kernel啟動部分Log如下: 15:29:01.552: [ 0.000000]Linux version 3.14.19 (g
繼續訪問
熱門推薦 N1救磚總結帖
一、正常降級刷固件的教程在恩山論壇蠻多的就不多贅述了 正常刷機教程-來自恩山 二、變磚原因: 1.刷錯T1等非N1的固件 2.刷機過程中由於各種原因斷開了USB連接線(我就是手欠用的USB-Hub連接沒有固定好) 三、變磚現象 四、救磚方法 ①有用焊接使用TTL直刷的,這種成本高,要求也高,還麻煩,暫不考慮,有興趣去恩山看下帖子就好 ②我抄作業學到的: 需要的軟體:USB_Burning_To...
繼續訪問

斐訊n1開機卡在android
斐訊n1卡在android

⑹ iMX6ull SD卡系統和Nandflash系統

系統源碼和編譯方法,[參見連接] ( https://community.nxp.com/docs/DOC-334274 )其中dtb文件針對LCD或HDMI修改的內容對iSpeaker無影響,不用去修改。我們會使用另外的dtb文件。
燒寫SD方式也不採用這個文檔中的方法,直接在linux命令行下如下操作:

Nandflash使用zImage,dtb文件和SD卡中使用的完全一致。Uboot文件SD中使用的不能用於Nandflash,源碼另見。
燒寫Nandflash需要用SD卡系統盤啟動,SD卡系統中需要寬芹已安裝mtd-utils工具。系統啟動後能咐橋正慎簡畢常看到mtd0~mtd4分區。按照下面步驟操作:

$ flash_erase /dev/mtd0 0 0
$ flash_erase /dev/mtd1 0 0
$ flash_erase /dev/mtd2 0 0
$ kobs-ng init -x u-boot.imx --search_exponent=1 -v
$ flash_erase /dev/mtd3 0 0
$ nandwrite -p /dev/mtd3 zImage
$ nandwrite -p /dev/mtd3 -s 0x7e0000 imx.dtb
$ ubiformat /dev/mtd4 -f ubi.img

其中使用ubi.img文件,在linux主機下製作方法如下:
使用的根文件系統和SD卡中的根文件系統一樣,假設SD卡已插入linux主機usb介面,並將第二個分區掛載與/mnt下,首先在linux主機工作目錄下建立文本文件ubifs.cfg,內容如下:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
然後執行如下命令:
$ mkfs.ubifs -x zlib -m 2048 -e 124KiB -c 3965 -r /mnt ubifs.img
$ ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 -O 2048 ubifs.cfg

⑺ dtb是什麼文件怎麼打開

dtb是可以減少linux內大櫻核版本的數量的文件。同一份linux 內核代碼可以在多個板卡上運行,每個板卡可以使用自己的dtb文件。

打開方法:

1、點擊打開網頁瀏覽器,輸入網路網址打開網路首頁,然後再搜索窗口輸入UltraEdit,然後點擊網路一下。

網路-ultraedit

⑻ dtb是什麼文件怎麼打開

dtb是可以減少linux內核版本的數量的文件。同一份linux 內核代碼可以在多個板卡上運行,每個板卡可以使用自己的dtb文件。



1,在linux內核啟動過程中會解析dtb文件,根據dtb文件中設備列表進行加註各個外設的驅動模塊。


2,PC機在啟動時會自動掃描外設,而在嵌入式中,linux內核啟動過程中只是解析dtb文件,從而載入對應的模塊。


3,編譯linux內核時必須選擇某外設模塊,並且dtb中包括該外橡鄭設塌畢的信息。在linux內核啟動團如芹過程中才能自動載入該模塊。

閱讀全文

與linuxdtb文件相關的資料

熱點內容
win10刪除c盤文件會刪掉系統嗎 瀏覽:785
qq的獨立密碼怎麼取消 瀏覽:289
後台的商品數據在哪裡看 瀏覽:795
不用網路載入的單機游戲有哪些 瀏覽:608
數據線插頭怎麼接頭 瀏覽:577
網路載入視頻失敗是怎麼回事 瀏覽:805
傳奇賬號在哪個文件夾里 瀏覽:346
百度app在哪裡安裝 瀏覽:587
如何設置路由器網路不斷網 瀏覽:471
傳到qq群里的文件怎麼刪除 瀏覽:861
索尼安卓71更新日誌 瀏覽:234
怎麼找手機里的垃圾app 瀏覽:540
2015藍橋杯代碼填空 瀏覽:698
安卓資料庫dbexecSQL 瀏覽:227
doc重命名文件格式 瀏覽:728
getscreen截圖工具下載 瀏覽:719
共識數據是什麼時候開始的 瀏覽:96
數碼管顯示電壓程序 瀏覽:479
資料庫文件有哪個 瀏覽:543
途強儲存在哪個文件夾 瀏覽:172

友情鏈接