Ⅰ 怎麼吧SQLServer中的「DTS 包" 導入導出
先導出後導入啊.
假設你要將DB1的數據導入DB2.
那你可以先從DB1導出到磁碟文件.
再將磁碟文件導進DB2.
具體,你需要建立必要的數據源.
Ⅱ sql 2014 可以用dts 嗎
可以,在sql server中主要有三種方式導入導出數據:使用Transact-SQL對數據進行處理;調用命令行工具BCP處理數據;使用數據轉換服務(DTS)對數據進行處理。
DTS是SQL Server中導入導出數據的核心,它除有具有SQL和命令行工具BCP相應的功能外,還可以靈活地通過VBScript、JScript等腳本語言對數據進行檢驗、凈化和轉換。
sql Server為DTS提供了圖形用戶介面,用戶可以使用圖形界面導入導出數據,並對數據進行相應的處理。同時,DTS還以com組件的形式提供編程介面,也就是說任何支持com組件的開發工具都可以利用com組件使用DTS所提供的功能。DTS在SQL Server中可以保存為不同的形式,可以是包的形式,也可以保存成Visual Basic源程序文件,這樣只要在VB中編譯便可以使用DTS com組件了。
DTS和其它數據導入導出方式最大的不同就是它可以在處理數據的過程中對每一行數據進行深度處理。以下是一段VBScript代碼,這段代碼在處DTS理每一條記錄時執行,DTSDestination表示目標記錄,DTSSource表示源記錄,在處理「婚姻狀況」時,將源記錄中的「婚姻狀況」中的0或1轉換成目標記錄中「已婚」或「未婚」。
使用DTS方式導數據應該是最好的方式了。由於它整合了Microsoft Universal Data Access技術與Microsoft ActiveX技術,因此不僅可以靈活地處理數據,而且在數據導入導出的效率是非常高的。
如果是在SQL Server資料庫之間進行數據導入導出時,並且不需要對數據進行復雜的檢驗,最好使用Transact-SQL方法進行處理,因為在SQL Server資料庫之間進行數據操作時,SQL是非常快的。當然,如果要進行復雜的操作,如數據檢驗、轉換等操作時,最好還是使用DTS進行處理,因為 DTS不光導數據效率高,而且能夠對數據進行深度控制。但是DTS的編程介面是基於com的,並且這個介面十分復雜,因此,使用程序調用DTS將變也會變得很復雜,因此, 當數據量不是很大,並且想將數據導入導出功能加入到程序中,而且沒有復雜的數據處理功能時,可以使用OPENDATASOURCE或OPENROWSET 進行處理。
Ⅲ 如何將dtb反編譯成dts
由於device tree會將一個node的信息分布在各個文件里,查看起來很不方便,比如如下例子,ldb在三個文件中都有配置:
imx6qdl-sabresd.dtsi:
&ldb {
status = "okay";
.......
};
imx6qdl.dtsi:
ldb: ldb@020e0008 {
#address-cells = <1>;
#size-cells = <0>;
......
};
imx6q.dtsi:
&ldb {
compatible = "fsl,imx6q-ldb", "fsl,imx53-ldb";
.......
}
其實device tree編譯之後最終是會被全部放在一個.dtb結尾的文件,
比如這里是imx6q-sabresd-ldo.dtb,用如下命令就可以看到整個ldb node的內容,而且也可以作為編譯之後的檢查。
[kris@ecovacs:~/kernel_imx/scripts/dtc]$
./dtc -I dtb -O dts ../../arch/arm/boot/dts/imx6q-sabresd-ldo.dtb > ~/f.dts
Ⅳ linux載入dts的時候會創建設備節點嗎
From:http://m.blog.csdn.net/blog/liliyaya/9188193
1. 在\kernel\of\fdt.c 中有如下初始化函數 注釋上:展開設備樹,創建device_nodes到全局變數allnodes中
void __init unflatten_device_tree(void)
{
__unflatten_device_tree(initial_boot_params, &allnodes,
early_init_dt_alloc_memory_arch);
/* Get pointer to "/chosen" and "/aliasas" nodes for use everywhere */
of_alias_scan(early_init_dt_alloc_memory_arch);
}
unflatten_device_tree函數被setup_arch函數調用,
因為我們使用得是arm平台所以存在\kernel\arch\arm\kernel\setup.c中
void __init setup_arch(char **cmdline_p)
{
unflatten_device_tree()
}
setup_arch函數在kernel啟動是被調用,如下啟動kernel存在\kernel\init\main.c中
asmlinkage void __init start_kernel(void)
{
setup_arch(&command_line);
}
這些工作完成解析DTS文件。保存到全局鏈表allnodes中。
2、在makefile中有這段話來編譯dts文件:
$(obj)/A20%.dtb: $(src)/dts/A20%.dts FORCE
$(call if_changed_dep,dtc)
$(obj)/A68M%.dtb: $(src)/dts/A68M%.dts FORCE
$(call if_changed_dep,dtc)
和.c文件生成.o文件一樣 回生成.dtb文件。在
/home/liyang/workspace/SZ_JB-mr1-8628-bsp-1012/out/target/proct/msm8226/obj/KERNEL_OBJ/arch/arm/boot
目錄下,與zimage一個目錄。
3、
在 board-8226.c中有初始化函數-->啟動自動掉用
void __init msm8226_init(void)
{
of_platform_populate(NULL, of_default_bus_match_table, adata, NULL);
}
of_platform_populate在kernel\driver\of\platform.c中定義,回查詢
root = root ? of_node_get(root) : of_find_node_by_path("/");
for_each_child_of_node(root, child)
{
rc = of_platform_bus_create(child, matches, lookup, parent, true);
if (rc)
break;
}
of_node_put(root);
在這里用到得函數of_find_node_by_path會最終調用到kernel\driver\of\base.c中得函數
struct device_node *of_find_node_by_path(const char *path)
{
遍歷第1步中得allnodes找到根節點
}
of_platform_bus_create()函數中創建得內容存在了 adata中。
以下內容為轉載:
(2)使用DTS注冊匯流排設備的過程
以高通8974平台為例,在注冊i2c匯流排時,會調用到qup_i2c_probe()介面,該介面用於申請匯流排資源和添加i2c適配器。在成功添加i2c適配器後,會調用of_i2c_register_devices()介面。此介面會解析i2c匯流排節點的子節點(掛載在該匯流排上的i2c設備節點),獲取i2c設備的地址、中斷號等硬體信息。然後調用request_mole()載入設備對應的驅動文件,調用i2c_new_device(),生成i2c設備。此時設備和驅動都已載入,於是drvier裡面的probe方法將被調用。後面流程就和之前一樣了。
簡而言之,Linux採用DTS描述設備硬體信息後,省去了大量板文件垃圾信息。Linux在開機啟動階段,會解析DTS文件,保存到全局鏈表allnodes中,在掉用.init_machine時,會跟據allnodes中的信息注冊平台匯流排和設備。值得注意的是,載入流程並不是按找從樹根到樹葉的方式遞歸注冊,而是只注冊根節點下的第一級子節點,第二級及之後的子節點暫不注冊。Linux系統下的設備大多都是掛載在平台匯流排下的,因此在平台匯流排被注冊後,會根據allnodes節點的樹結構,去尋找該匯流排的子節點,所有的子節點將被作為設備注冊到該匯流排上。
Ⅳ 嵌入式linux 修改dts文件同時需要修改preloader么
U-Boot 引入了扁平設備樹FDT 這樣的動態介面,使用一個單獨的FDT blob(二進制大對象,是一個可以存儲二進制文件的容器)存儲傳遞給內核的參數[3]。一些確定信息,例如cache 大小、中斷路由等直接由設備樹提供,而其他的信息,例如eTSEC 的MAC 地址、頻率、PCI 匯流排數目等由U-Boot 在運行時修改。U-Boot 使用扁平設備樹取代了bd_t,而且也不再保證對bd_t 的後向兼容。需要修改的,重新編譯dts文件。
Ⅵ linux內核中的dts文件用什麼編輯
樓主為什麼要編譯在一起 現在做的都是分別生成內核和文件系統待燒錄的文件,再下載到開發板上 開發板上的晶元會設置分區,對應載入的文件
Ⅶ dts與wav格式怎麼轉成dts格式
DTS(Digital Theater Systems)是一種高質量的多聲道音頻編碼方式,目前主要用作DVD的伴音。DTS 5.1的最大碼率(Bitrate)與LPCM(LPCM是數位非經壓縮的聲音規格,音質佳,所佔容量空間較大)相同,可達1536Kbps,遠高於目前另一種流行的多聲道編碼系統──Dolby Digital AC3的 448Kbps,雖然同樣是有損壓縮,但它可提供更為逼真,細節更為豐富的音響效果。用DVD中DTS音軌來製作音樂CD無疑是非常理想的。不過,長期以來這只能是發燒友的一個夢想,因為DTS標准一直沒有開放(只授權給硬體廠商),相關軟體非常少,沒有辦法將它直接轉換成WAV格式。筆者經過多次嘗試,終於找到了個好的方法。
一、所需軟體及安裝
好在現在已經出現了非常不錯的第三方DTS解碼器,解碼的質量已經相當理想了,這樣就為DTS轉換為WAV提供了前提條件。DTS轉換為WAV需要的文件和軟體有:
dtsac3source.ax DTS/AC3輸出濾鏡
iviaudio.ax InterVideo公司的音頻解碼器,提供了DTS音頻解碼
wavdest.ax WAV輸出濾鏡(來自DirectX SDK)
qcap.dll 文件寫入濾鏡(Windows XP自帶)
Microsoft的可視化音視頻濾鏡編輯工具
以上文件除了dtsac3source.ax和qcap.dll外,都包含在GraphEdit的壓縮包中。首先將dtsac3source.ax文件解壓至系統文件夾的system32目錄中,並運行regsvr32 dtsac3source.ax命令進行注冊;然後將GraphEdit壓縮包解壓至某個目錄當中,並運行register.bat批處理命令,注冊其中的濾鏡。
二、用GraphEdit轉換DTS文件
1.選擇要使用的濾鏡
運行GraphEdit,選擇 「Graph」菜單中的「Insert Filters」命令,打開濾鏡選擇對話框(如圖)。在對話框中展開「DirectShow Filters」並選擇其下的「DTS/AC3 Source」濾鏡,單擊「Insert Filter」按鈕,會彈出「Select an Input file for this filter use(選擇導入使用這個濾鏡的文件)」對話框,在這里瀏覽至DTS文件所在的目錄,並將它導入。
接下來同樣也是在 「DirectShow Filters」下分別插入InterVideo Audio Decoder、WAV Dest濾鏡,再選擇「File writer」濾鏡,然後在彈出的「Select an Output file for this filter use」對話框中設置輸出的WAV文件名及其保存路徑。
2.連接濾鏡,設置處理步驟
現在關閉如圖的對話框,回到GraphEdit的主窗口,用滑鼠單擊「DTS/AC3 Source」濾鏡的「Output」端,通過拖動引出一條連線,與「InterVideo Audio Decoder」的「XFrom In」端連接;然後再將「InterVideo Audio Decoder」的「XFrom Out」與「WAV Dest」的In相連;最後將「WAV Dest」與「File Writer(即Output.wav)」相連接,這樣DTS文件的處理步驟就設置好了。
大致的處理過程就是將DTS文件通過「DTS/AC3 Source」濾鏡導入,並交給「InterVideo Audio Decoder」解碼,在「WAV Dest」處轉換成WAV格式,最後由「File Writer」寫入磁碟。
3.設置InterVideo Audio Decoder解碼器屬性
建立好連線後,選擇「InterVideo Audio Decoder」濾鏡,單擊滑鼠右鍵,在快捷菜單中選擇「Filter Properties(濾鏡屬性)」,會彈出解碼器的屬性對話框。
在對話框中選擇「2 Speaker mode」下的「Stereo(立體聲)」或「Dolby Surround Compatible(兼容杜比環繞聲)」。這里不要選擇4聲道或6聲道模式,這樣只會使WAV文件變得很大,而且聲音變調。
4.輸出WAV文件
設置好後,回到主界面,點擊工具欄上的「播放」按鈕開始輸出WAV文件。此時你不會聽到播放的聲音,只會看到硬碟燈亮,表明硬碟正在進行寫操作。
最後你將得到一個48kHz,1536Kbps的雙聲道PCM WAV文件,這樣的文件可以直接用Nero來制錄Audio CD,也可以轉換成其他更節省磁碟的壓縮格式。
Ⅷ DTS 導入/導出向導錯誤
導入mdf文件,首先要附加資料庫,你的錯誤提示是因為該mdf文件並不在已附加的本地資料庫列表中
Ⅸ 如何使用dtc編譯設備樹 devicetree
DTS (device tree source)
.dts文件是一種ASCII 文本格式的Device
Tree描述,此文本格式非常人性化,適合人類的閱讀習慣。基本上,在ARM
Linux在,一個.dts文件對應一個ARM的machine,一般放置在內核的arch/arm/boot/dts/目錄。由於一個SoC可能對應多個machine(一個SoC可以對應多個產品和電路板),勢必這些.dts文件需包含許多共同的部分,Linux內核為了簡化,把SoC公用的部分或者多個machine共同的部分一般提煉為.dtsi,類似於C語言的頭文件。其他的machine對應的.dts就include這個.dtsi。譬如,對於VEXPRESS而言,vexpress-v2m.dtsi就被vexpress-v2p-ca9.dts所引用,
vexpress-v2p-ca9.dts有如下一行:
/include/
"vexpress-v2m.dtsi"
當然,和C語言的頭文件類似,.dtsi也可以include其他的.dtsi,譬如幾乎所有的ARM
SoC的.dtsi都引用了skeleton.dtsi。
.dts(或者其include的.dtsi)基本元素即為前文所述的結點和屬性:
[plain] view
plainprint?
/ {
node1 {
a-string-property = "A string";
a-string-list-property = "first string", "second string";
a-byte-data-property = [0x01 0x23 0x34 0x56];
child-node1 {
first-child-property;
second-child-property = <1>;
a-string-property = "Hello, world";
};
child-node2 {
};
};
node2 {
an-empty-property;
a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */
child-node1 {
};
};
};
/ {
node1 {
a-string-property = "A string";
a-string-list-property = "first string", "second string";
a-byte-data-property = [0x01 0x23 0x34 0x56];
child-node1 {
first-child-property;
second-child-property = <1>;
a-string-property = "Hello, world";
};
child-node2 {
};
};
node2 {
an-empty-property;
a-cell-property = <1 2 3 4>; /* each number (cell) is a uint32 */
child-node1 {
};
};
};
上述.dts文件並沒有什麼真實的用途,但它基本表徵了一個Device
Tree源文件的結構:
1個root結點"/";
root結點下面含一系列子結點,本例中為"node1" 和
"node2";
結點"node1"下又含有一系列子結點,本例中為"child-node1" 和
"child-node2";
各結點都有一系列屬性。這些屬性可能為空,如"
an-empty-property";可能為字元串,如"a-string-property";可能為字元串數組,如"a-string-list-property";可能為Cells(由u32整數組成),如"second-child-property",可能為二進制數,如"a-byte-data-property"。
下面以一個最簡單的machine為例來看如何寫一個.dts文件。假設此machine的配置如下:
1個雙核ARM
Cortex-A9 32位處理器;
ARM的local bus上的內存映射區域分布了2個串口(分別位於0x101F1000 和
0x101F2000)、GPIO控制器(位於0x101F3000)、SPI控制器(位於0x10170000)、中斷控制器(位於0x10140000)和一個external
bus橋;
External bus橋上又連接了SMC SMC91111
Ethernet(位於0x10100000)、I2C控制器(位於0x10160000)、64MB NOR
Flash(位於0x30000000);
External bus橋上連接的I2C控制器所對應的I2C匯流排上又連接了Maxim
DS1338實時鍾(I2C地址為0x58)。
其對應的.dts文件為:
[plain] view
plainprint?
/ {
compatible = "acme,coyotes-revenge";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&intc>;cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
compatible = "arm,cortex-a9";
reg = <0>;
};
cpu@1 {
compatible = "arm,cortex-a9";
reg = <1>;
};
};serial@101f0000 {
compatible = "arm,pl011";
reg = <0x101f0000 0x1000 >;
interrupts = < 1 0 >;
};serial@101f2000 {
compatible = "arm,pl011";
reg = <0x101f2000 0x1000 >;
interrupts = < 2 0 >;
};gpio@101f3000 {
compatible = "arm,pl061";
reg = <0x101f3000 0x1000
0x101f4000 0x0010>;
interrupts = < 3 0 >;
};intc: interrupt-controller@10140000 {
compatible = "arm,pl190";
reg = <0x10140000 0x1000 >;
interrupt-controller;
#interrupt-cells = <2>;
};spi@10115000 {
compatible = "arm,pl022";
reg = <0x10115000 0x1000 >;
interrupts = < 4 0 >;
};external-bus {
#address-cells = <2>
#size-cells = <1>;
ranges = <0 0 0x10100000 0x10000 // Chipselect 1, Ethernet
1 0 0x10160000 0x10000 // Chipselect 2, i2c controller
2 0 0x30000000 0x1000000>; // Chipselect 3, NOR Flashethernet@0,0 {
compatible = "smc,smc91c111";
reg = <0 0 0x1000>;
interrupts = < 5 2 >;
};i2c@1,0 {
compatible = "acme,a1234-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
reg = <1 0 0x1000>;
interrupts = < 6 2 >;
rtc@58 {
compatible = "maxim,ds1338";
reg = <58>;
interrupts = < 7 3 >;
};
};flash@2,0 {
compatible = "samsung,k8f1315ebm", "cfi-flash";
reg = <2 0 0x4000000>;
};
};
};
/ {
compatible = "acme,coyotes-revenge";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&intc>;
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
compatible = "arm,cortex-a9";
reg = <0>;
};
cpu@1 {
compatible = "arm,cortex-a9";
reg = <1>;
};
};
serial@101f0000 {
compatible = "arm,pl011";
reg = <0x101f0000 0x1000 >;
interrupts = < 1 0 >;
};
serial@101f2000 {
compatible = "arm,pl011";
reg = <0x101f2000 0x1000 >;
interrupts = < 2 0 >;
};
gpio@101f3000 {
compatible = "arm,pl061";
reg = <0x101f3000 0x1000
0x101f4000 0x0010>;
interrupts = < 3 0 >;
};
intc: interrupt-controller@10140000 {
compatible = "arm,pl190";
reg = <0x10140000 0x1000 >;
interrupt-controller;
#interrupt-cells = <2>;
};
spi@10115000 {
compatible = "arm,pl022";
reg = <0x10115000 0x1000 >;
interrupts = < 4 0 >;
};
external-bus {
#address-cells = <2>
#size-cells = <1>;
ranges = <0 0 0x10100000 0x10000 // Chipselect 1, Ethernet
1 0 0x10160000 0x10000 // Chipselect 2, i2c controller
2 0 0x30000000 0x1000000>; // Chipselect 3, NOR Flash
ethernet@0,0 {
compatible = "smc,smc91c111";
reg = <0 0 0x1000>;
interrupts = < 5 2 >;
};
i2c@1,0 {
compatible = "acme,a1234-i2c-bus";
#address-cells = <1>;
#size-cells = <0>;
reg = <1 0 0x1000>;
interrupts = < 6 2 >;
rtc@58 {
compatible = "maxim,ds1338";
reg = <58>;
interrupts = < 7 3 >;
};
};
flash@2,0 {
compatible = "samsung,k8f1315ebm", "cfi-flash";
reg = <2 0 0x4000000>;
};
};
};
上述.dts文件中,root結點"/"的compatible 屬性compatible =
"acme,coyotes-revenge";定義了系統的名稱,它的組織形式為:<manufacturer>,<model>。Linux內核透過root結點"/"的compatible
屬性即可判斷它啟動的是什麼machine。
在.dts文件的每個設備,都有一個compatible
屬性,compatible屬性用戶驅動和設備的綁定。compatible
屬性是一個字元串的列表,列表中的第一個字元串表徵了結點代表的確切設備,形式為"<manufacturer>,<model>",其後的字元串表徵可兼容的其他設備。可以說前面的是特指,後面的則涵蓋更廣的范圍。如在arch/arm/boot/dts/vexpress-v2m.dtsi中的Flash結點:
[plain] view
plainprint?
flash@0,00000000 {
compatible = "arm,vexpress-flash", "cfi-flash";
reg = <0 0x00000000 0x04000000>,
<1 0x00000000 0x04000000>;
bank-width = <4>;
};
flash@0,00000000 {
compatible = "arm,vexpress-flash", "cfi-flash";
reg = <0 0x00000000 0x04000000>,
<1 0x00000000 0x04000000>;
bank-width = <4>;
};
compatible屬性的第2個字元串"cfi-flash"明顯比第1個字元串"arm,vexpress-flash"涵蓋的范圍更廣。
再比如,Freescale
MPC8349 SoC含一個串口設備,它實現了國家半導體(National Semiconctor)的ns16550
寄存器介面。則MPC8349串口設備的compatible屬性為compatible = "fsl,mpc8349-uart",
"ns16550"。其中,fsl,mpc8349-uart指代了確切的設備, ns16550代表該設備與National Semiconctor
的16550
UART保持了寄存器兼容。
接下來root結點"/"的cpus子結點下面又包含2個cpu子結點,描述了此machine上的2個CPU,並且二者的compatible
屬性為"arm,cortex-a9"。
注意cpus和cpus的2個cpu子結點的命名,它們遵循的組織形式為:<name>[@<unit-address>],<>中的內容是必選項,[]中的則為可選項。name是一個ASCII字元串,用於描述結點對應的設備類型,如3com
Ethernet適配器對應的結點name宜為ethernet,而不是3com509。如果一個結點描述的設備有地址,則應該給出@unit-address。多個相同類型設備結點的name可以一樣,只要unit-address不同即可,如本例中含有cpu@0、cpu@1以及serial@101f0000與serial@101f2000這樣的同名結點。設備的unit-address地址也經常在其對應結點的reg屬性中給出。ePAPR標准給出了結點命名的規范。
Ⅹ 編譯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