Time of Update: 2018-12-04
1、驅動程式的編寫、與makefile的編寫2、驅動程式的編譯 make3、應用程式的編寫與編譯4、應用程式對驅動程式的使用 a、掛載驅動程式 insmod *.ko b、得到驅動程式的裝置號 ls -l /proc/devices c、建立驅動程式的裝置節點 mknod /dev/second c 252 0(/dev/second建立後可以使用的裝置節點,可以你自己選擇, c表示字元裝置,252上一步得到的主裝置,0次裝置號) d、運行應用程式 例子:////
Time of Update: 2018-12-04
.4 __create_page_tables()__create_page_tables()函數同樣也是位於arch/arm/kernel/head.S中,代碼如下:__create_page_tables:pgtbl r4 @ page table address/** Clear the 16K level 1 swapper page table*/mov r0, r4mov r3, #0add r6, r0, #0x40001: str r3, [r0], #4str r3, [r0]
Time of Update: 2018-12-04
1.編譯選項加入-D_FILE_OFFSET_BITS=64解決linux下2G檔案限制// example.c#include <stdio.h>int main(int argc, char* argv[]){ FILE *fp; if ((fp = fopen("test.dat", "w+")) == NULL) return; int a = 0; char data[1024] = ""; while (true) {
Time of Update: 2018-12-04
linux kickstart之中rootpw密碼可以使用明文,也可以使用加密過的值(密碼為:IPPBXADMINROOT)注意:在這裡要使用加密過的值,否則安全性就太低了rootpw --iscrypted $1$IPPBXADM$qlbCgDSCK/a.1ZzfEk/mT.就是讀取加密後的值,但是這個值是怎麼產生的呢?這與linux系統的密碼shadow一樣,產生方法如下:perl -e 'print
Time of Update: 2018-12-04
1)在drivers/char下編寫驅動代碼。 主要函數module_init:註冊裝置節點,建立裝置module_exit:登出裝置節點,刪除裝置fops函數:包括open、ioctl、close等驅動函數結構。 2)在drivers/char下的Kconfig檔案中加入該模組並make menuconfig配置核心。
Time of Update: 2018-12-04
最近在搞電容式觸控螢幕驅動,用I2C匯流排介面來傳輸資料,所以趁機複習一下I2C匯流排原理。 I2C匯流排是Philips公司推出的晶片間品德傳輸匯流排,它採用兩線制,由串列時鐘線SCL和串列資料線SDA構成。在電路設計方面,由於I2C匯流排介面為開漏或開集電極輸出,需要加上上拉電阻。 I2C匯流排通訊方式: (1)I2C採用主/從方式進行雙向通訊。 (2)I2C匯流排的時鐘線SCL和資料線SDA都是雙向傳輸線。
Time of Update: 2018-12-04
以前我用grep 命令,我覺得不錯,也使用過,但是最近老是覺得用起來很奇怪,搜尋檔案裡面的一些詞的時候非常的慢。難道是我的電腦配置真的太差了嗎?grep -R s3c_setup_keypad_cfg_gpio 半天不出來,唉! 命令我用過,可以的,難道是我搞錯了,Sate210 的合作拍檔說他是這樣用的grep s3c_setup_keypad_cfg_gpio . -r 試了一下他的方法,真的比較快,現在看看這個grep 命令還有什麼訣竅。#man grep
Time of Update: 2018-12-04
前陣子已經買了幾本android的經典書籍,但是發現裡面沒講linux的基礎,對於我們這種wince轉型過來的, 雖然懂ARM的一些基礎,但是幾乎不懂linux的任何東西,所以必須掌握linux的架構流程才能開發,不然肯定會鬱悶死。 再買下面的書籍linux裝置驅動程式(第三版)這裡還有英文版 免費的哦 至於太入門級的韋東山的書籍就不用了。再去看看宋寶華的書籍就有用。 Linux裝置驅動開發詳解
Time of Update: 2018-12-04
例子11,kernel\arch\arm\mach-pxa\board-test.c 增加/* i2c */static struct i2c_gpio_platform_data i2c_bus_data = { .sda_pin = VIPER_RTC_I2C_SDA_GPIO, .scl_pin = VIPER_RTC_I2C_SCL_GPIO, .udelay = 10, .timeout = 100,}; static struct platform_device
Time of Update: 2018-12-04
1.下載安裝minicomsudo apt-get install minicom2.運行minicom運行“sudo minicom -s”命令進入配置介面(或者直接運行“sudo minicom”, 然後同步選取“斷行符號+A”,再按Z,最後按O,同樣進入配置介面)+----[配置]--------+| 檔案名稱和路徑 | 檔案傳輸通訊協定 | 串口設定 | 數據機和撥號 | 螢幕和鍵盤 | 設定儲存為dfl | 設定儲存為.. |
Time of Update: 2018-12-04
轉自:http://blog.chinaunix.net/uid-20543672-id-129729.html今天用主線Linux核心移植到MINI6410,主線核心2.6.37.1基本已經支援了MINI6410的板子,所以移植到能夠啟動起來的階段很簡單,但是在移植的時候還是出現了一個比較常見的問題:MINI6410 # bootm 0x50008000## Booting kernel from Legacy Image at 50008000 ...Image Name: Linux-2.
Time of Update: 2018-12-04
/* list_entry - get the struct for this entry * @ptr: the &struct list_head pointer. * @type: the type of the struct this is embedded in. * @member: the name of the list_struct within the struct.*/ #define list_entry(ptr, type, member)
Time of Update: 2018-12-04
1.下載並解壓核心到任意目錄從源碼官網下載最新的核心源碼3.0.4,可以解壓至任意目錄,我放在主目錄下:~$ tar xjvf linux-3.0.4.tar.bz2 2.配置核心對核心進行配置是為了得到核心設定檔.config。通過對核心進行配置,可以使未來編譯成功的核心增加或減少對一些核心特性的支援。對核心進行配置有多種方法,有基於文本的配置方式也有基於圖形的使用者介面。下面採用使用比較廣泛的make
Time of Update: 2018-12-04
第一章:介紹與基本概念 1.Linux遵循一切皆檔案的哲學,檔案通過獨一無二的檔案描述符來引用,(file descriptior,簡稱fd ),檔案描述符是一個整數(c的int 類型)。fd由使用者空間程式所共用,而使用者空間程式可以直接使用fd來訪問檔案。 2.常規檔案內含資料位元組,而且被組織成一個稱為位元組流(byte stream)的線性數組(linear
Time of Update: 2018-12-04
管道是Linux中很重要的一種通訊方式,是把一個程式的輸出直接連接到另一個程式的輸入,常說的管道多是指無名管道,無名管道只能用於具有親緣關係的進程之間,這是它與有名管道的最大區別。 有名管道叫named pipe或者FIFO(先進先出),可以用函數mkfifo()建立。
Time of Update: 2018-12-04
1.Linux的變數種類 按變數的生存周期來劃分,Linux變數可分為兩類: 1.1 永久的:需要修改設定檔,變數永久生效。 1.2 臨時的:使用export命令聲明即可,變數在關閉shell時失效。2.設定變數的三種方法 2.1 在/etc/profile檔案中添加變數【對所有使用者生效(永久的)】 用VI在檔案/etc/profile檔案中增加變數,該變數將會對Linux下所有使用者有效,並且是“永久的”。 例如:編輯/etc/profile檔案,添加CLASSPATH變數 #
Time of Update: 2018-12-04
今天在linux (CentOS release 5.6 )下配置了一個svn伺服器。以下為主要的步驟。1、安裝apahce:要能訪問svn,首先的裝apache伺服器。 2、安裝mod_dav_svn模組:同時apache需要載入mod_dav_svn和mod_authz_svn.so模組。在我的機器上沒有mod_dav_svn這個模組。因此我用yum install
Time of Update: 2018-12-04
在Linux裝置驅動模型摘抄(2)中,我們通過追蹤amba_pl011.c中的驅動程式的註冊過程展示了一個裝置如何被統一到Linux統一裝置模型的一個過程,amba_pl011是一個generic的裝置下面我們以Android Goldfish TTY Driver為例,再次說明一下這個過程(/drivers/char/goldfish_tty.c):
Time of Update: 2018-12-04
用sudo時提示"xxx is not in the sudoers file. This incident will be reported.其中XXX是你的使用者名稱,也就是你的使用者名稱沒有許可權使用sudo,我們只要修改一下/etc/sudoers檔案就行了。 下面是解決方案: 1)進入超級使用者模式。也就是輸入"su -",系統會讓你輸入超級使用者密碼,輸入密碼後就進入了超級使用者模式。(當然,你也可以直接用root用)(注意有-
Time of Update: 2018-12-04
#include<iostream>#include<cstdlib>#include<string>#include<cstring>#include<fstream>using namespace std;int main(int argc, char* argv[]){ for (int i = 0; i<argc; i++) cout<<argv[i]<<endl;