Time of Update: 2018-12-03
掛u盤之前,運行命令cat /proc/partitions,看看現在系統中有哪些分區。插上u盤以後,再次運行上述命令,看看多出來什麼分區.通常是sda1.1、插入隨身碟2、輸入 fdisk -l /dev/sda 查看輸出結果,比如我的是這樣的:[root@leason-laptop proc]# fdisk -l /dev/sdaDisk /dev/sda: 2004 MB, 2004877312 bytes247 heads, 62 sectors/track, 255
Time of Update: 2018-12-03
一、 考試說明1.考試要求:(1) 掌握 Linux 系統使用的基本知識;(2) 掌握 Linux 系統下程式設計和開發的流程和方法;(3) 掌握 Linux Shell 下的程式編寫;(4) 掌握嵌入式 Linux 系統構建的方法;(5) 掌握 Boot Loader 的啟動和運行過程;(6) 掌握 ARM-Linux 系統分析的方法;(7) 掌握嵌入式根檔案系統的構建和設定;(8) 掌握嵌入式 Linux 多線程編程的方法;(9) 瞭解嵌入式 Web 服務器系統結構;(10)掌握
Time of Update: 2018-12-03
有關unicode及UTF-8和其它字元編碼的介紹請參考阮一峰的日誌:字元編碼筆記:ASCII,Unicode和UTF-8原以為直接使用widechartomultibyte就可以直接搞定,到後來才發現這個程式是在windows平台下用的,Linux下根本找不到。後來找到了一個Linux下台下的程式,wcstombs() ,需要瞭解的朋友可以自己到網上Google一下。但是由於自己應用方面的限制也用不了。實在沒辦法就只好自己寫了,代碼如下:
Time of Update: 2018-12-03
自動建立裝置檔案方法: 裝置驅動和應用程式之間通過/dev目錄下的裝置檔案來通訊,這個裝置檔案可以由使用者使用mknod來手工建立,也可以由裝置驅動程式在初始化時自動建立。 這種工作一般是這樣的:#include<linux/device.h> staticint memdev_init(void){struct class *myclass;… myclass = class_create(THIS_MODULE,
Time of Update: 2018-12-03
看到這裡,有的哥們要生氣了,怎麼我們美麗的input裝置被嫁出去,居然一下就忽悠過去了,都不詳細描述一下她的具體被嫁過程,她到底嫁給哪個handler了?又是怎麼相中的?相中後他們兩又一起做了些什嗎?好了,為了滿足這位兄弟的慾望,我們來詳細閱讀一下前面那個input_attach_handler(dev, handler)函數。就是在這個函數中,發生了所有該發生的事情。static int input_attach_handler(struct input_dev *dev, struct
Time of Update: 2018-12-03
究竟何謂input裝置,相信武漢跳蚤市場上賣寵物小狗的大媽都能一口答出來,你能不知道嗎?對,就是我們傳說中的輸入裝置。說到輸入裝置,相信用過電腦的兄弟都不會陌生了,即按鍵、滑鼠、鍵盤、等一系列需要我們使用者“動手”產生資訊,然後丟給我們聰明絕頂的pc來處理的裝置。前面說了,linux核心input子系統中已經實現了input裝置的介面函數,這使得我們工作量大大的減輕了。我們以akm8973晶片(用於智能手機指南針的主功能晶片,實際上就一電子羅盤)為例,來簡單看一下寫一個input裝置我們需要做的
Time of Update: 2018-12-03
說到evdev handler這個名字,相信大家一定再熟悉不過了,就是那個妻妾成群孩子成堆的傢伙,一個讓世界上很多男人都望塵莫及的傢伙。嫉妒吧,羨慕吧,這些或許都已不重要,為瞭解解恨,我們還得想辦法搞定她跟akm input裝置大媽生下的那個女兒了。不過想搞定他女兒,咱得先搞定她爸。只要她爸開口了,後面的事情可能就好說了一些。不管怎樣,還是來熟悉一下這位evdev handle大叔。static struct input_handler evdev_handler = {
Time of Update: 2018-12-03
1.守護進程程式寫成守護進程,fork兩次。2.系統日誌調用openlog, syslog, closelog使用syslog或rsyslog服務,配置/etc/syslog.conf或/etc/rsyslog.conf例子:local2.* /var/log/app.log重啟syslog生效/etc/init.d/syslog restartsyslog使用說明:設定檔的格式: 設施.層級
Time of Update: 2018-12-03
最近有這樣一個事情:18名上海某名牌大學學生為了尋求刺激,到某險地進行探險,後迷失森林,然後肚子餓了,衣服穿少了冷,於是與打電話求助當地警員。最後這幫大學生都得以救出,然後飯也吃飽了,衣服也加上了,不過在救援的途中,人民的兒子,年輕的張寧海警員永遠離我們而去了。好好地大學生放著課不上,去外地探險……好了廢話不多說。繼續我們的input裝置之旅。從前一節來看,在linux核心中添加一個input裝置變得很簡單了。我們再也不必須去動手寫那些該死的介面函數了。可是你有沒有想過,是誰讓我們的工作變得這麼
Time of Update: 2018-12-03
將闡述Linux核心中的如下幾個概念 1) 進程組 2) 會話 3) 控制終端 前面的概念來源於前人,我只是站在前人的肩膀上結合核心中的實現加深概念理解。 1.概念: a) 進程組 Shell 上的一條命令列形成一個進程組 每個進程屬於一個進程組 每個進程組有一個領頭進程 進程組的生命週期到組中最後一個進程終止, 或加入其他進程組為止 getpgrp: 獲得進程組 id, 即領頭進程的 pid setpgid: 加入進程組和建立新的進程組 前台進程組和後台進程組 ================
Time of Update: 2018-12-03
對應input core,前面我一直在誇她的好,對於一個大家都不認識的傢伙,我這樣說她,是不是顯的特虛,好了,為了證明她並不是那麼的虛,我不得不拿出前面第二節中出現過的兩行代碼來看看:akm->input_dev = input_allocate_device();err = input_register_device(akm->input_dev);沒有錯,這正是我們要把akm實現為一個input
Time of Update: 2018-12-03
故事真正要進入高潮部分了。接下來我們來瞭解一下,我們前面那位美少女是在哪兒被嫁了出去的。真正的執行者乃input_register_device()函數。同樣來自input core中,我們來看一下她的全貌:int input_register_device(struct input_dev *dev){ 1 static atomic_t input_no = ATOMIC_INIT(0); 2 struct input_handler *handler;
Time of Update: 2018-12-03
第一步:將將交叉編譯工具鏈arm - linux- gcc- 4.5.1 - v6- vfp-20101103.tgz拷貝到windows系統的共用資料夾中,之後,進入linux系統,點擊電腦,選擇網路,找到本機,之後選擇共用資料夾,將arm - linux- gcc- 4.5.1 - v6- vfp-20101103.tgz拷貝到linux系統中,我在檔案系統下建立了一個arm-linux-gcc的檔案夾,並解壓到此檔案夾中。
Time of Update: 2018-12-03
文中列出的命令絕對不可以運行,即使你覺得很好奇也不行,除非你是在虛擬機器上運行(出現問題你可以還原),因為它們會實實在在的破壞你的系統。所以不在root等進階系統管理權限下執行命令是很好的習慣。早晚有一天,Linux 系統會像 Windows
Time of Update: 2018-12-03
這裡我們只以其中的一行為例來分析一下如何給我們的input子系統上報事件。input_report_abs(data->input_dev, ABS_RX, rbuf[0]);繼續跟蹤: static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value){ input_event(dev, EV_ABS, code,
Time of Update: 2018-12-03
沒錯,到目前為止,akm input裝置也註冊了,evdev handler大叔的全貌也搞明白了,他們的女兒也亭亭玉立了……是不是該幹正事的時候了?好吧,我們就來看看如何來幹這份正事:還是列出那份操作集合函式(handler大叔為我們這些笑的最後的弟兄精心準備的泡妹妹大法,不過現實生活中可沒有這樣的爸爸):static const struct file_operations evdev_fops = { .owner = THIS_MODULE, .
Time of Update: 2018-12-03
插播一條訊息:火箭官網剛剛公布,姚明徹底告別本賽季。看來退役也是遲早的事情了,其實上大學就一直關注火箭隊,一個主要原因是有姚明,誰讓咱是中國人呢,中國人都是很愛國的,當然個別間諜分子除外。因為姚明,喜歡上了麥迪……如今二人都淪落這般境地,想想讓人心寒。煙花易冷、人事易分啊。好了,不提這些傷心地事兒了。我們做點有勁的事兒,繼續研究我們的evdev
Time of Update: 2018-12-03
要在目錄/sys/下建立一個目錄,就需要向核心註冊一個kobject結構。該結構就是該目錄的一個載體。而該結構的屬性由struct kobj_type來儲存。註冊kojbect的方法為:/*初始化 kobject結構*/void kobject_init(struct kobject * kobj);/*將kobject對象註冊到linux系統*/Int kobject_add(struct kobject * kobj);或者將上面兩步合為一步:Int
Time of Update: 2018-12-03
趕早繼續~每個扇區512位元組,我建立一個2M的檔案。開始的時候我不知道一個簇幾個扇區,後來偵錯工具的時候才看到內部數組,一個簇2個扇區。我是類比NAND FLASH。一個page512位元組,每個塊有32個page,2M的檔案有了128個塊。檔案的第一塊用來作為系統塊。所以扇區大小要扣除系統塊。寫完diskio.c,就開始寫測試代碼。首先必須建立一個檔案,並賦予一定大小。我是通過讀寫來測試的。1、調用f_mount函數。 一般掛載不會出現什麼問題。2、開始的時候我沒調用f_mkfs(0,0,0
Time of Update: 2018-12-03
註冊匯流排三步曲:註冊匯流排bus_register(&my_bus_type);建立屬性檔案bus_create_file(&my_bus_type, &bus_attr_version);註冊匯流排裝置device_register(&my_bus);匯流排由struct bus_type結構來表示,如第一步的my_bus_type,