導航:首頁 > 程序命令 > linux命令移植

linux命令移植

發布時間:2022-07-12 05:35:14

linux必學的60個命令

Linux必學的60個命令

安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;

文件處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;

系統管理相關命令:df、top、free、quota、at、lp、adser、groupadd、kill、crontab;

網路操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup;

系統安全相關命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who;

其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。

Linux的優點

1、Linux由眾多微內核組成,其源代碼完全開源;

2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發出新的協議棧;

3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;

❷ Linux系統移植的目錄

第1篇 系統移植基礎篇
第1章 linux內核介紹 2
1.1 系統調用介面 2
1.1.1 linux系統調用 2
1.1.2 用戶編程介面 2
1.1.3 系統調用與服務常式的對應關系 3
1.1.4 系統調用過程 3
1.1.5 系統調用傳遞的參數 4
1.2 進程管理 4
1.2.1 進程 4
1.2.2 進程描述符 5
1.2.3 進程狀態 6
1.2.4 進程調度 6
1.2.5 進程地址空間 8
1.3 內存管理 10
1.3.1 內存管理技術 10
1.3.2 內存區管理 12
1.3.3 內核中獲取內存的幾種方式 13
1.4 虛擬文件系統 14
1.4.1 虛擬文件系統作用 14
.1.4.2 文件系統的注冊 15
1.4.3 文件系統的安裝和卸載 15
1.5 設備驅動程序 17
1.5.1 字元設備驅動程序 17
1.5.2 塊設備驅動程序 18
1.5.3 網路設備驅動程序 21
1.5.4 內存與i/o操作 22
1.6 小結 23
第2章 嵌入式linux開發環境搭建 24
2.1 虛擬機及linux安裝 24
2.1.1 虛擬機的安裝 24
2.1.2 單獨分區安裝系統 30
2.1.3 虛擬機和主機通信設置 31
2.1.4 vmware tools工具安裝 33
2.1.5 虛擬機與主機共享文件 35
2.1.6 虛擬機與主機文件傳輸 36
2.2 交叉編譯工具 38
2.2.1 交叉編譯工具安裝 38
2.2.2 交叉編譯器測試 43
2.3 超級終端和minicom 44
2.3.1 超級終端軟體的安裝 44
2.3.2 minicom使用 45
2.3.3 securecrt使用 48
2.4 內核、文件系統載入工具 48
2.4.1 燒寫bootloader 48
2.4.2 內核和文件系統下載 52
2.4.3 應用程序和文件傳輸 54
2.5 在開發中使用網路文件系統(nfs) 56
2.5.1 虛擬機設置 56
2.5.2 虛擬機的ip地址設置 56
2.5.3 驗證網路連接 59
2.5.4 設置共享目錄 59
2.5.5 啟動nfs服務 60
2.5.6 修改共享配置後 61
2.5.7 掛載nfs 61
2.5.8 雙網卡掛載nfs 61
2.6 小結 62
第2篇 系統移植技術篇
第3章 bootloader移植 64
3.1 bootloader介紹 64
3.1.1 bootloader與嵌入式linux系統的關系 64
3.1.2 bootloader基本概念 64
3.1.3 bootloader啟動過程 66
3.2 bootloader之u-boot 67
3.2.1 u-boot優點 67
3.2.2 u-boot的主要功能 68
3.2.3 u-boot目錄結構 68
3.3 u-boot移植過程 69
3.3.1 環境配置 69
3.3.2 修改cpu/arm920t/start.s 70
3.3.4 具體平台相關修改 79
3.3.5 其他部分修改 81
3.3.6 u-boot的編譯 84
3.4 bootloader之vivi 85
3.4.1 vivi簡介 85
3.4.2 vivi配置與編譯 85
3.4.3 代碼分析 88
3.5 vivi的運行 88
3.5.1 bootloader啟動的階段一 89
3.5.2 bootloader啟動的階段二 95
3.6 小結 95
第4章 linux內核裁剪與移植 96
4.1 linux內核結構 96
4.1.1 內核的主要組成部分 96
4.1.2 內核源碼目錄介紹 97
4.2 內核配置選項 99
4.2.1 一般選項 99
4.2.2 內核模塊載入方式支持選項 100
4.2.3 系統調用、類型、特性、啟動相關選項 101
4.2.4 網路協議支持相關選項 102
4.2.5 設備驅動支持相關選項 102
4.2.6 文件系統類型支持相關選項 103
4.2.7 安全相關選項 104
4.2.8 其他選項 104
4.3 內核裁剪及編譯 105
4.3.1 安裝內核源代碼 105
4.3.2 檢查編譯環境設置 105
4.3.3 配置內核 106
4.3.4 編譯內核 115
4.4 內核映像文件移植到arm板 116
4.4.1 移植准備 116
4.4.2 燒寫系統 118
4.5 內核升級 121
4.5.1 准備升級內核文件 121
4.5.2 移植過程 122
4.6 小結 125
第5章 嵌入式文件系統製作 126
5.1 文件系統選擇 126
5.1.1 flash硬體方案比較 126
5.1.2 嵌入式文件系統的分層結構 127
5.2 基於flash的文件系統 127
5.2.1 jffs文件系統(journalling flash filesystem) 128
5.2.2 yaffs文件系統(yet another flash file system) 130
5.2.3 cramfs文件系統(compressed rom file system) 133
5.2.4 romfs文件系統(rom file system) 134
5.3 基於ram的文件系統 135
5.4 文件系統的製作 135
5.4.1 製作ramdisk文件系統 136
5.4.2 製作yaffs2文件系統 144
5.4.3 製作jffs2文件系統 150
5.4.4 其他文件系統製作 152
5.5 小結 153
第3篇 系統移植與驅動篇
第6章 lcd驅動移植 156
6.1 認識lcd相關硬體原理 156
6.1.1 lcd概述 156
6.1.2 lcd控制器 157
6.1.3 lcd控制器方塊圖 157
6.1.4 lcd控制器操作 158
6.1.5 lcd控制寄存器 163
6.2 lcd參數設置 166
6.3 內核lcd驅動機制 167
6.3.1 framebuffer概述 167
6.3.2 framebuffer 設備驅動的結構 167
6.4 linux 2.6.25的lcd驅動源碼分析 171
6.4.1 lcd驅動開發的主要工作 171
6.4.2 s3c2410fb_init()函數分析 172
6.4.3 s3c2410fb_probe()函數分析 173
6.4.4 s3c2410fb_remove()函數分析 178
6.5 移植內核中的lcd驅動 179
6.5.1 lcd硬體電路圖 179
6.5.2 修改lcd源碼 179
6.5.3 配置內核 184
6.6 小結 187
第7章 觸摸屏驅動移植 188
7.1 觸摸屏概述 188
7.1.1 觸摸屏工作原理 188
7.1.2 觸摸屏的主要類型 188
7.2 s3c2440 adc介面使用 191
7.2.1 s3c2440觸摸屏介面概述 191
7.2.2 s3c2440觸摸屏介面操作 192
7.3 2.6內核觸摸屏驅動源碼分析(s3c2410_ts.c源碼分析) 196
7.4 linux內核輸入子系統介紹 201
7.4.1 input子系統概述 202
7.4.2 輸入設備結構體 202
7.4.3 輸入鏈路的創建過程 205
7.4.4 使用input子系統 206
7.4.5 編寫輸入設備驅動需要完成的工作 208
7.5 觸摸屏驅動移植和內核編譯 209
7.5.1 修改初始化源碼 209
7.5.2 修改硬體驅動源碼s3c2440_ts.c 211
7.5.3 修改kconfig和makefile 213
7.5.4 配置編譯內核 214
7.5.5 觸摸屏測試程序設計 215
7.6 小結 216
第8章 usb設備驅動移植 217
8.1 usb協議 217
8.1.1 usb協議的系統主要組成部分 217
8.1.2 匯流排物理拓撲結構 219
8.1.3 usb設備、配置、介面、端點 219
8.1.4 usb設備狀態 222
8.1.5 usb枚舉過程 223
8.1.6 usb請求塊(urb) 226
8.2 usb主機驅動 230
8.2.1 usb主機驅動結構和功能 230
8.2.2 主機控制器驅動(usb_hcd) 231
8.2.3 ohci主機控制器驅動 233
8.2.4 s3c24xx ohci主機控制器驅動實例 234
8.3 usb設備驅動 237
8.3.1 usb骨架程序分析 237
8.3.2 usb驅動移植的時鍾設置 241
8.4 usb滑鼠鍵盤驅動 242
8.4.1 usb滑鼠驅動代碼分析 242
8.4.2 usb鍵盤驅動代碼分析 245
8.4.3 內核中添加usb滑鼠鍵盤驅動 248
8.5 u盤驅動 249
8.5.1 內核配置 249
8.5.2 移植和測試 250
8.6 小結 252
第9章 網卡驅動程序移植 253
9.1 乙太網概述 253
9.1.1 乙太網連接 253
9.1.2 乙太網技術概述 254
9.1.3 乙太網的幀結構 256
9.2 網路設備驅動程序體系結構 258
9.2.1 嵌入式linux網路驅動程序介紹 258
9.2.2 linux網路設備驅動的體系結構 259
9.2.3 網路設備驅動程序編寫方法 259
9.2.4 網路設備驅動程序應用實例 261
9.3 net_device 數據結構 262
9.3.1 全局信息 262
9.3.2 硬體信息 263
9.3.3 介面信息 263
9.3.4 設備方法 266
9.3.5 公用成員 268
9.4 dm9000網卡概述 268
9.4.1 dm9000網卡總體介紹 269
9.4.2 dm9000網卡的特點 269
9.4.3 內部寄存器 270
9.4.4 功能描述 274
9.5 dm9000網卡驅動程序移植 275
9.5.1 dm9000網卡連接 275
9.5.2 驅動分析——硬體的數據結構 276
9.5.3 驅動分析——數據讀寫函數 277
9.5.4 驅動分析——重置網卡 277
9.5.5 驅動分析——初始化網卡 277
9.5.6 驅動分析——打開和關閉網卡 282
9.5.7 驅動分析——數據包的發送與接收 283
9.5.8 dm9000網卡驅動程序移植 285
9.6 小結 288
第10章 音頻設備驅動程序移植 289
10.1 音頻設備介面 289
10.1.1 pcm(脈沖編碼調制)介面 289
10.1.2 iis(inter-ic sound)介面 289
10.1.3 ac97(audio codec 1997)介面 289
10.1.4 linux音頻設備驅動框架 290
10.2 linux音頻設備驅動——oss驅動框架 291
10.2.1 oss驅動架構硬體 291
10.2.2 oss驅動架構代碼 291
10.2.3 oss初始化函數oss_init() 293
10.2.4 oss釋放函數oss_cleanup() 294
10.2.5 打開設備文件函數sound_open() 295
10.2.6 錄音函數sound_read() 296
10.2.7 播放函數sound_write() 297
10.2.8 控制函數sound_ioctl() 297
10.3 linux音頻設備驅動——alsa驅動框架 298
10.3.1 card和組件 299
10.3.2 pcm設備 303
10.3.3 控制介面 306
10.3.4 ac97 api音頻介面 308
10.4 音頻設備應用程序編寫 312
10.4.1 dsp介面編程 312
10.4.2 mixer介面編程 315
10.4.3 alsa應用程序編程 316
10.5 音頻設備驅動移植 318
10.5.1 添加uda1341結構體 318
10.5.2 修改錄音通道 319
10.5.3 內核中添加uda1341驅動支持 320
10.5.4 移植新內核並進行測試 321
10.6 音頻播放程序madplay的移植 322
10.6.1 准備移植需要的源文件 322
10.6.2 交叉編譯 322
10.6.3 移植和測試 323
10.6.4 編譯中可能遇到的問題 324
10.7 小結 324
第11章 sd卡驅動移植 325
11.1 sd卡簡介 325
11.1.1 sd卡系統概念 325
11.1.2 sd卡寄存器 325
11.1.3 sd功能描述 326
11.2 sd卡驅動程序分析 329
11.2.1 host驅動部分 330
11.2.2 core驅動部分 333
11.2.3 card驅動部分 337
11.3 sd卡移植步驟 339
11.3.1 添加延時和中斷 339
11.3.2 配置內核 340
11.3.3 燒寫新內核 341
11.4 小結 342
第12章 nandflash驅動移植 343
12.1 nandflash介紹 343
12.1.1 nandflash命令介紹 343
12.1.2 nandflash控制器 344
12.2 nandflash驅動介紹 345
12.2.1 nand晶元結構 345
12.2.2 nandflash驅動分析 346
12.3 nandflash驅動移植 351
12.3.1 內核的修改 351
12.3.2 內核的配置和編譯 353
12.4 小結 353
第4篇 系統移植高級篇
第13章 minigui與移植 356
13.1 minigui在上位機中的安裝 356
13.1.1 安裝需要的安裝文件 356
13.1.2 minigui的運行模式 357
13.1.3 編譯並安裝minigui 357
13.1.4 編譯安裝minigui需要的圖片支持庫 360
13.1.5 編譯minigui應用程序例子 360
13.2 eclipse開發minigui程序 361
13.2.1 linux下安裝eclipse介紹 361
13.2.2 使用eclipse編譯minigui程序 363
13.2.3 設置外部工具 367
13.2.4 運行程序 368
13.3 vc++6.0開發minigui程序 368
13.3.1 安裝windows開發庫 368
13.3.2 建立新工程 369
13.3.3 添加文件和設置工程 370
13.3.4 編譯和運行程序 371
13.3.5 minigui程序編程風格舉例 372
13.4 minigui的交叉編譯和移植 374
13.4.1 交叉編譯minigui 375
13.4.2 移植minigui程序 376
13.5 小結 378
第14章 qt開發與qtopia移植 379
14.1 qt安裝與編程 379
14.1.1 下載安裝qt 379
14.1.2 qt編程 380
14.1.3 使用qmake生成makefile 382
14.2 qtopia core在x86平台上的安裝和應用 383
14.2.1 qtopia core安裝准備 383
14.2.2 編譯qtopia core 384
14.2.3 qtopia在x86平台上的應用開發 385
14.3 qtopia core在嵌入式linux上的移植 388
14.3.1 qtopia core移植准備 389
14.3.2 交叉編譯qtopia core 389
14.3.3 編譯內核 392
14.3.4 應用程序開發 392
14.3.5 應用程序移植 395
14.4 小結 395
第15章 嵌入式資料庫berkeley db移植 396
15.1 資料庫的基本概念 396
15.1.1 利用文檔和源代碼 396
15.1.2 創建環境句柄 396
15.1.3 創建資料庫句柄 397
15.1.4 打開資料庫 398
15.1.5 dbt結構 398
15.1.6 存取數據 399
15.1.7 關閉資料庫 400
15.2 berkeley db資料庫安裝 400
15.2.1 安裝成c庫 400
15.2.2 安裝成c++庫 401
15.2.3 交叉編譯安裝berkeley db 401
15.3 使用berkeley db資料庫 403
15.3.1 代碼分析 403
15.3.2 編譯運行程序 406
15.4 移植berkeley db資料庫 407
15.4.1 資料庫設計 407
15.4.2 編寫應用程序 407
15.4.3 調試和交叉編譯應用程序 409
15.4.4 資料庫的移植和測試 410
15.5 小結 410
第16章 嵌入式資料庫sqlite移植 411
16.1 sqlite支持的sql語句 411
16.1.1 數據定義語句 411
16.1.2 數據操作語句 412
16.2 sqlite資料庫編譯、安裝和使用 412
16.2.1 安裝sqlite 413
16.2.2 利用sql語句操作sqlite資料庫 413
16.2.3 利用c介面訪問sqlite資料庫 414
16.3 移植sqlite 417
16.3.1 交叉編譯sqlite 417
16.3.2 交叉編譯應用程序 418
16.4 移植sqlite資料庫 418
16.4.1 文件移植 419
16.4.2 運行應用程序 419
16.4.3 測試sqlite3 419
16.5 小結 421
第17章 嵌入式web伺服器boa移植 422
17.1 boa介紹 422
17.1.1 boa的功能 422
17.1.2 boa流程分析 423
17.1.3 boa配置信息 426
17.2 boa編譯和html頁面測試 428
17.2.1 編譯boa源代碼 428
17.2.2 設置boa配置信息 429
17.2.3 測試boa 429
17.3 cgi腳本測試 431
17.3.1 編寫測試代碼 431
17.3.2 編譯測試程序 431
17.3.3 測試cgi腳本 431
17.4 boa交叉編譯與移植 431
17.4.1 交叉編譯boa 432
17.4.2 准備測試程序 432
17.4.3 配置boa 432
17.4.4 測試 433
17.5 boa與sqlite結合 433
17.5.1 通過cgi程序訪問sqlite 434
17.5.2 編譯和測試 436
17.6 小結 437
第18章 嵌入式web伺服器thttpd移植 438
18.1 thttpd介紹 438
18.1.1 web伺服器比較 438
18.1.2 thttpd的特點 438
18.1.3 thttpd核心代碼分析 439
18.2 thttpd編譯和html頁面測試 442
18.2.1 配置文件介紹 442
18.2.2 thttpd編譯 443
18.2.3 運行和測試thttpd 443
18.3 cgi腳本測試 446
18.3.1 編寫測試代碼 446
18.3.2 編譯測試程序 447
18.3.3 測試cgi腳本 447
18.4 thttpd交叉編譯與移植 447
18.4.1 交叉編譯thttpd 447
18.4.2 交叉編譯cgi程序 448
18.4.3 移植thttpd 448
18.4.4 測試 449
18.5 thttpd與嵌入式資料庫結合 450
18.5.1 通過cgi程序訪問sqlite 450
18.5.2 編譯和測試 452
18.6 小結 453
第19章 jvm及其移植 454
19.1 jvm介紹 454
19.1.1 jvm原理 454
19.1.2 jvm支持的數據類型 455
19.1.3 jvm指令系統 456
19.1.4 jvm寄存器 456
19.1.5 jvm棧結構 456
19.1.6 jvm碎片回收堆 459
19.1.7 jvm異常拋出和異常捕獲 459
19.2 類裝載 460
19.2.1 裝載類的結構體 460
19.2.2 裝載類的操作 461
19.3 垃圾回收 463
19.3.1 mark-and-sweep回收演算法 464
19.3.2 分代回收演算法 465
19.3.3 增量收集 466
19.4 解析器 466
19.4.1 函數interpret() 466
19.4.2 函數fastinterpret() 467
19.4.3 函數slowinterpret () 469
19.5 java編程淺析 470
19.5.1 java程序命令 470
19.5.2 java構造函數 470
19.5.3 java主函數 470
19.5.4 java程序編譯與運行 471
19.6 kvm執行過程 471
19.6.1 kvm啟動過程 471
19.6.2 kvm用到的計數器清零 474
19.6.3 kvm初始化內存管理 475
19.6.4 kvm中的哈希表初始化 476
19.6.5 kvm中的事件初始化 477
19.6.6 kvm中的資源釋放 477
19.7 pc機安裝jvm 477
19.7.1 jvm在windows上的安裝 478
19.7.2 jvm在linux上的安裝 479
19.8 kvm移植和測試 480
19.8.1 sdk安裝和環境變數設置 480
19.8.2 修改makefile和代碼 480
19.8.3 kvm編譯 481
19.8.4 測試 481
19.8.5 移植 483
19.9 小結 485
第20章 voip技術與linphone編譯 486
20.1 voip介紹 486
20.1.1 voip基本原理 486
20.1.2 voip的基本傳輸過程 487
20.1.3 voip的優勢 487
20.1.4 voip的實現方式 487
20.1.5 voip的關鍵技術 488
20.2 osip協議概述 488
20.3 osip狀態機 489
20.3.1 ict(invite client (outgoing) transaction)狀態機 489
20.3.2 nict(non-invite client (outgoing) transaction)狀態機 498
20.3.3 ist(invite server (incoming) transaction)狀態機 499
20.3.4 nist(non-invite server (incoming) transaction)狀態機 500
20.4 osip解析器 500
20.4.1 初始化解析類型函數osip_body_init() 500
20.4.2 釋放函數osip_body_free() 501
20.4.3 字元串到body類型轉換函數osip_body_parse() 501
20.4.4 body類型到字元串類型轉換函數osip_body_to_str() 502
20.4.5 克隆函數osip_body_clone() 504
20.4.6 osip解析器分類 505
20.5 osip事務層 506
20.6 sip建立會話的過程 508
20.7 rtp協議 510
20.7.1 rtp基本概念 510
20.7.2 發送rtp 511
20.7.3 接收rtp 513
20.8 linphone編譯與測試 515
20.8.1 編譯linphone需要的軟體包 516
20.8.2 x86平台上編譯和安裝 516
20.8.3 linphone測試 519
20.8.4 進一步的測試和開發 523
20.9 linphone交叉編譯 523
20.9.1 linphone的交叉編譯 523
20.9.2 linphone的測試 526
20.10 小結 527

❸ 如何以低成本將Linux 內核移植到嵌入式處

1 高速USB硬體介面設計目前的嵌入式系統設計中,USB介面的外擴主要採用微處理器晶元自帶的USB控制器,一般只支持低速和全速協議,無法實現高速數據傳輸。該設計採用AT91RM9200處理器外擴ISP1761 USB控制器方案,解決了嵌入式系統下USB設備的傳輸速度問題。
AT91RM9200是Atmel公司一款基於ARM920T內核的微型處理器。它有豐富的系統與應用外設及標准介面,時鍾頻率可達180 MHz,並且具有低功耗、低成本、高性能,在嵌入式系統中應用廣泛。ISP1761是Philips公司開發的一款高速USB On The Go(OTG)控制器,晶元內集成了64 KB的高速緩沖,單次處理數據達32 KB,極大地提升了系統的處理性能,並且功耗很低,其內部集成了Slave主機控制器和外設控制器。此外,ISP761還有可配置的32 b/16 b非同步CPU介面,該設計ISP1761外部數據匯流排設置為16 b模式。
處理器AT91RM9200與外擴USB控制器的連接如圖1所示。其中,A[17∶1]為地址線;DATA[15∶0]為數據線;WR_N為讀使能;RD_N為寫使能;CS_N片選信號採用NCS2;AT9lRM9200的中斷源1分配給ISP1761作為其中斷信號。處理器和ISP1761之間的數據傳輸通過中斷方式實現,當USB介面有中斷產生時,處理器的中斷服務程序通過讀取ISP1761的中斷寄存器判斷中斷來源,從而執行相應的讀/寫操作。
2 高速USB軟體驅動實現2.1 Linux系統中USB驅動結構USB內核模塊是Linux系統中USB子系統的核心模塊,它為USB驅動(設備和主控制器)提供了一個統一的介面,以訪問和控制USB硬體。
如圖2所示,應用程序發出的USB請求塊(URB)經過上層的USB設備驅動和USB內核後到達USB主控制器。處於最底層USB主控制器的驅動(HCD)是USB主機直接與硬體交互的軟體模塊,它將解析URB後,再將數據發送到指定的USB設備上。
圖3為ISP1761與操作系統相連接的介面框圖。圖5中,ISP1761要完成操作系統與USB設備的通信。驅動部分主要分兩個層次:ISP1761硬體抽象層(HAL)和主控制器驅動(HCD)層。前者,通過GPIO介面和操作系統平台的相關函數來完成訪問ISP1761硬體的功能;後者,主要實現將數據傳輸給連接的USB設備,並管理根集中器埠的功能。
因此,該設計的軟體驅動部分主要由以下兩個層次來完成USB主機端的驅動功能。
(1)ISP1761的HAL層。雲頂賭場首先初始化設備結構,並添加設備到系統的設備層。其中,初始化部分主要完成ISP1761資源(如內存、中斷等)的初始化設置和AT91RM9200處理器的初始化設置,為後期注冊驅動程序做准備。如果系統成功添加了設備,在載入和卸載ISP1761主控制器驅動程序到內核時,就會進一步執行平台驅動程序的注冊,否則將不能注冊驅動程序。一旦注冊成功,驅動程序就已經和設備綁定,任何用戶態程序要操作此設備都可以通過platform_driver結構所定義的函數進行。下面給出該系統注冊的platform_driver結構:
其中,在設備探測和注銷等函數中調用了如下一個重要的結構體isp1761_dev。該結構體主要包含了ISP1761設備驅動的基本信息和中斷處理常式指針。
(2)ISP1761的HCD層。Philips公司的ISP1761主控制器晶元遵循EHCI標准。該層在載入和卸載ISP1761主控制器驅動到內核時被調用,主要負責與連接的USB設備進行數據傳輸,並管理根集中器埠。具體包括主控制器常式、內存管理、根集中器和中心集中器的管理、數據傳輸等。
其中,pehci_hcd_urb_enqueue()函數是該部分所要實現的重點函數,主要用於完成將來自USB core層的urb傳輸請求轉換成EHCI可識別的傳輸描述結構。然後安排到EHCI的periodic schele list或者asynchronous schele list的合適位置。當HC完成urb對應的傳輸後,EHCI HCD通過urb→cornplete()通知USB core對應的傳輸結果,最終完成通信過程。該函數的原型如下:
3 USB驅動的調試使用USB驅動的正常使用必須在內核中正確選擇配置,除了默認配置之外,還要添加諸如SCSI設備的支持,VFAT文件格式的支持,新添加ISP1761驅動的支持等。ISP1761的驅動採用模塊方式編譯,系統啟動後,逐層插入驅動模塊載入USB主控制器驅動程序到內核。此時,系統插入U盤可成功獲得分區,如下所示:
執行掛載命令mount-t vfat/dev/scsi/host0/busO/target0/lun0/partl/mnt/ usb(前提是已經在/mnt目錄下建立了USB目錄,並且U盤的格式為win-dows下的vfat)便可成功掛載U盤到指定的目錄/mnt/usb下。
拷貝U盤上的文件到嵌入式系統,經多次測試,速度可達到約100~125 Mb/s,相比傳統的嵌入式Linux系統下對USB的支持,速度得到了很好的提高,基本滿足高速讀/寫的要求。
結語隨著USB介面在嵌入式領域越來越廣泛的應用和嵌入式Linux內核的不斷擴展,嵌入式Linux內核支持的USB設備和USB主控制器越來越豐富,相應的驅動開發工作也將日益突出。該設計給出了嵌入式Linux系統下高速USB主控制器的硬體設計方案和驅動的實現方法,在提高系統性能的同時,降低了成本,有很好的實際應用價值。同時驅動的模塊化結構設計保持了其最大可移植性,對於嵌入式下USB主控制器的驅動開發具有很好的借鑒意義。

❹ 什麼叫linux系統移植

一般來講Linux系統移植是把Linux從一個已經支持的硬體架構上移植到一個還未支持的硬體架構上。由於Linux最初是Linus Trovalds為x86架構寫的,因此一般Linux系統移植是把x86版本移植到別的架構上,例如arm、mips、powerPC、SPARC(近幾年主流Linux發行版都傾向於只支持x86、amd64和arm版,對其他平台的支持越來越少了)。

❺ 如何移植linux天嵌2440的開發板,有linux源碼包和EABI,是tar.bz2格式,這個是要放到linux系統下

移植包括uboot、內核、文件系統三個分面。。
linux源碼包主要是內核、eabi是一個交叉編譯工具(不懂),就是在linux平台生成2440開發板能執行的文件。
首先你要移植uboot、原後到內核,最後文件系統。一步步來吧,這裡面內容多的是!不看資料還真說不清楚。。建議先照著資料一步步做。

❻ linux移植命令的依賴文件,不同步到小系統上

我估計是環境變數的問題。
注意一點,chroot 是保留當前環境變數的。而重新啟動後,環境變數就是需要啟動過程來設置的。

❼ 如何手動移植linux系統到迅為4412

方法/步驟

1
首先連接好 iTOP-4412 開發板的調試串口到 pc 上,在 pc 的 windows 系統下打開串口
調試工具。開發板上電,在串口調試工具里按任意 pc 鍵盤的任意按鍵使開發板進入 uboot 命令行模式,如下圖所示:

2
然後在 uboot 輸入分區命令:「fdisk -c 0 1024 300 300」,如下圖所示:

3
上面圖片里的命令是把 emmc分區,其中的 1024 是 linux 的存儲空間,單位是 MB,也
就是 1G。如果想分配更大的空間修改這個值即可。
執行完上面的命令,如下圖所示:

END
方法/步驟2

1
然後在 uboot 命令行分別輸入下面的命令,格式化分區:
fatformat mmc 0:1
ext3format mmc 0:2
ext3format mmc 0:3
ext3format mmc 0:4
至此 EMMC的分區已經只做好了,下面我們開始製作 linux 文件系統,拷貝光碟
「linux/root_xxxxxxxx.tar.gz」(xxxxxxxx 是版本日期,)到 Ubuntu 虛擬機上,例如我這
里拷貝到了「/home/topeet/linux」目錄,如下圖所示:

2
然後使用「tar -xvf root_20140912.tar.gz」命令解壓 linux 文件系統,如下圖所示:

3
解壓完成後,輸入「ls」命令,可以看到生成了」root「文件夾

❽ 如何件android中的命令移植到linux開發板上,想使用android中的一些命令,方便開發,比如logcat命令

本文用《Android深度探索(卷1):HAL與驅動開發》的隨書源代碼為例詳細說明如何配置Android驅動開發和測試環境,並且如何使用源代碼中的build.sh腳本文件在各種平台(UbuntuLinux、Android模擬器和S3C6410開發板)上編譯、安裝和測試Linux驅動。
建議讀者使用UbuntuLinux12.04或更高版本實驗本文的方法。
最好用root賬號登錄Linux。
一、安裝交叉編譯器
如果只是在UbuntuLinux上測試Linux驅動就不需要安裝交叉編譯器了,但要在Android模擬器或S3C6410開發板上進行測試,就必須安裝交叉編譯器。
首先下載交叉編譯器(分卷壓縮
下載後解壓,會發現有兩個tgz文件,可以將這兩個文件放到/root/compilers目錄中,在Linux終端進入該目錄,執行如下命令安裝交叉編譯器。
[plain]viewplain
#tarzxvfarm-linux-gcc-4.3.2.tgz-C/
#tarjxvfarm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2-C/
二、編譯和測試Linux內核
這里的Linux內核有兩個,一個是goldfish,也就是Android模擬器使用的Linux內核、另外一個是S3C6410開發板使用的Linux內核(Linux2.6.36)。
讀者首先要下載這兩個Linux內核。
Android模擬器用的Linux內核源代碼(分卷壓縮)
用於S3C6410開發板的Linux內核源代碼(分卷壓縮)
分卷1
分卷2
由於隨書代碼中的word_count驅動已經在goldfish和linux2.6.36中分別建立了符號鏈接,以便在編譯linux內核時同時也會編譯word_count驅動,所以linux內核與源代碼目錄應與作者機器上的目錄相同。
也就是兩個linux內核目錄與源代碼目錄如下:
linux內核目錄
/root/kernel/goldfish
/root/kernel/linux_kernel_2.6.36
源代碼目錄
/root/drivers
注意/root/drivers目錄下就直接是每一章的源代碼了,例如/root/drivers/ch
06、/root/drivers/ch07
現在需要將/usr/local/arm/arm-none-linux-gnueabi/bin路徑加到Linux的PATH環境變數中(不會加的上網查,這是Linux的基本功)
最後進入/root/compilers/goldfish目錄,執行make命令編譯linux內核,如果完全編譯,大概20分鍾左右。
編譯完成後,會在/root/kernel/goldfish/arch/arm/boot目錄中生成一個zImage文件,代碼1.7MB,這就是用於Android模擬器的Linux內核文件。
三、編譯Linux驅動
現在來編譯隨書光碟的驅動程序,這里以word_count驅動為例。
在Linux終端進入/root/drivers/ch06/word_count目錄。
先別忙著編譯。
首先要設置打開/root/drivers/common.sh文件,修改第一行UBUNTU_KERNEL_PATH變數值為自己機器上安裝的UbuntuLinux內核路徑,只要執行「ls/usr/src」命令即可查看當前機器可用的linux內核。

❾ 如何移植 linux 到安卓手機

移植toolbox到普通Linux系統中
toolbox是Android中專用的busybox,從嵌入式Linux轉過來都會大大地吐槽功能簡陋。但實質上也有很多特有的很好用的功能。比如getevent命令來調試所有的輸入事件。已經靜態編譯出來了(下載地址:toolbox 靜態編譯),這里記錄一下移植過程。
原本以為會很難,所以一直放很久才開始做,最終很簡單,只需要稍加修改Android.mk就可以編譯出一個靜態鏈接的toolbox。以下diff文件就是改動信息。
diff --git a/system/core/toolbox/Android.mk b/system/core/toolbox/Android.mk
index 086ba0d..d5aef3b 100755
--- a/system/core/toolbox/Android.mk
+++ b/system/core/toolbox/Android.mk
@@ -91,6 +91,7 @@ LOCAL_SRC_FILES := \
grep/grep.c grep/fastgrep.c grep/file.c grep/queue.c grep/util.c

LOCAL_SHARED_LIBRARIES := libcutils libc libusbhost
+LOCAL_STATIC_LIBRARIES := libc libcutils

LOCAL_C_INCLUDES := bionic/libc/bionic

@@ -102,6 +103,7 @@ LOCAL_C_INCLUDES += external/libselinux/include

endif

+LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE := toolbox

# Including this will define $(intermediates).

然後進行編譯就自動編譯成了靜態鏈接的了。
$ file out/target/proct/xxx/system/bin/toolbox
out/target/proct/xxx/system/bin/toolbox: ELF 32-bit LSB executable, ARM, \
version 1 (SYSV), statically linked, stripped
$12341234

當然,我沒有編譯所有的CPU架構的,只是編譯了ARMv7的,所以比較低的架構或者其它CPU可能不能直接使用,那麼就自行編譯吧。
<完>

閱讀全文

與linux命令移植相關的資料

熱點內容
加密u盤好還是不加密的 瀏覽:349
微觀經濟學平狄克第八版pdf 瀏覽:403
linux查看實時流量 瀏覽:557
如何存檔到伺服器 瀏覽:548
flash編程書籍推薦 瀏覽:835
php獲得數組鍵值 瀏覽:401
香港雲伺服器操作 瀏覽:303
wpe最新源碼 瀏覽:857
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:29
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:946
安卓導航無聲音怎麼維修 瀏覽:333