導航:首頁 > 程序命令 > sdcc命令

sdcc命令

發布時間:2022-07-09 16:34:47

linux kernel 何時上報uevent

uevent可以實現內核通知上層的一種機制,最常見的電池狀態的變化就是kernel uevent通知的,每次百分比或者其他的變化通過power_supply_changed通知上層update;

每個device下面都有kobj,找到device就可以通過kobject_uevent_env 通知android了;

以拔出T卡為例,內核通知上層。這里的T卡是一種sdio設備,普通TF卡是塊設備,安卓通過塊設備可以知道T卡的移除。

kernel:
Index: kernel/drivers/mmc/host/msm_sdcc.c
===================================================================
--- kernel/drivers/mmc/host/msm_sdcc.c (revision 10898)
+++ kernel/drivers/mmc/host/msm_sdcc.c (working )
@@ -77,6 +77,8 @@
#define MSM_MMC_BUS_VOTING_DELAY 200 /* msecs */
#define INVALID_TUNING_PHASE -1

+struct device *mmc1_dev;

+static int obj_enable =0;
+static int set_kobject_env(const char *val, struct kernel_param *kp)
+{
+ printk("%s called 00 \n",__func__);
+ kobject_uevent_env(&mmc1_dev->kobj, KOBJ_CHANGE, NULL);
+ return 0;
+}
+mole_param_call(obj, set_kobject_env, param_get_uint,
+ &obj_enable, 0644);
+
static irqreturn_t
msmsdcc_platform_status_irq(int irq, void *dev_id)
{
@@ -6186,6 +6205,11 @@
ret = device_create_file(&pdev->dev, &host->idle_timeout);
if (ret)
goto remove_polling_file;
+
+ if(mmc->index ==1)
+ mmc1_dev = &pdev->dev;
+
+
return 0;

java:
if (new File("/sys/devices/platform/msm_sdcc.3/uevent").exists()) {
mInvalidChargerObserver.startObserving(
"DEVPATH=/devices/platform/msm_sdcc.3");
}

private final UEventObserver mInvalidChargerObserver = new UEventObserver() {
@Override
public void onUEvent(UEventObserver.UEvent event) {

Slog.v(TAG, "Uevent changed ");
final int invalidCharger = "1".equals(event.get("SWITCH_STATE")) ? 1 : 0;
synchronized (mLock) {
if (mInvalidCharger != invalidCharger) {
mInvalidCharger = invalidCharger;
updateLocked();
}
}
}
};

關於Linux命令的介紹,看看《linux就該這么學》,具體關於這一章地址3w(dot)linuxprobe/chapter-02(dot)html

⑵ 玩游戲後手機顯示修改內核什麼意思

一、 提取 zImage 內核文件
在提取zImage 前,必須確保自己擁有 root 許可權。
輸入命令:
ls -l /dev/block/platform/msm_sdcc.1(具體設備具體定)/by-name,
找到 boot 這一項,記下路徑

將boot導出為boot.img
dd if=/dev/block/mmcblk0p19 of=/data/local/boot.img
adb pull /data/local/boot.img boot.img
使用abootimg工具,該工具見附件解開boot.img

將 zImage 文件復制為文件名為 z.gz 的文件,並使用 010editor 查找十六進制1f 8b 08 00,找到後把前面的數據全刪掉,使 kernel.gz 文件變成標準的 gzip 壓縮文件,這樣子就可以使用 gunzip 解壓了。
命令:gunzip z.gz
生成文件z就是祼二進制文件zImage。
二、 提位、修改關鍵代碼
zImage文件可以直接使用 IDA 去打開,但需要設置參數。

在上圖,設置處理器類型為ARM Little-endian,點【ok】後,彈下圖

在 ROM start address 和 Loading address 填0xc0008000,點【ok】,IDA顯示效果如下圖所示,沒有函數名,不方便定位代碼。

先回到root下的adb shell,輸入命令:
echo 0 > /proc/sys/kernel/kptr_restrict
關閉符號屏蔽
再輸入以下命令查看這兩函數的地址

回到 IDA,按 g 跳轉到c01b083c(__task_pid_nr_ns)地址處,在游標放在在該函數處:

然後按x,彈出引用搜索框

在搜索框里,找到sub_c02b9ff8(proc_pid_status)地址對應的函數,雙擊它,如果 IDA 沒有分析出該函數,就進行以下操作:
按shift+f12,搜索TracerPid,找到以下項

雙擊它,看到

再雙擊【DATA XREF: sub_c02b9ff8+190】,IDA就能分析出sub_c02b9ff8函數了,然後重新搜索sub_c01b083c的引用。找到後,雙擊它,得以下圖:

經本人分析得到的修改方法是把MOVEQ R10, R0替換為MOV R10, #0,機器碼為00 A0 A0 E3,指令的文件偏移為(C02BA568-C0008000=2B2568),及把BL sub_C01B083C替換為MOV R0, #0,機器碼為00 00 A0 E3,指令的文件偏移為(C01B083C-C0008000=1A883C)。
至少,內核文件修改成功。
三、刷回手機
刷回前需要先打包 boot.img 文件
使用命令壓縮成z.gz:gzip -n -f -9 z
使用010editor 將 z.gz 的二進制數據覆蓋到原zImage 文件的1F 8B 08 00處的位置(新的z.gz文件必須比原 z.gz 文件小,並且回寫回去時不能改變原zImage文件的大小及修改原 zImage 文件後面的內容,否則會很麻煩),這時得到了zImage文件。
執行命令abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img得到boot.img文件。
手機重啟進入刷機模式,然後,執行命令fastboot flash boot boot.img。
完成刷機後,重新開機,就大功告成了。
四、 還原磚頭
刷內核,不免會有刷成磚頭的情況。
使用步驟1中提取到的原版boot.img,在刷機模式下,執行 fastboot flash boot boot.img 就還原系統了。

⑶ 如何進入安卓手機linux內核

一、需要准備的東西

1
手機必須要Root,沒有的度娘解決。
2
首先安裝 終端模擬器 軟體,稍後有用,度娘一下搞定了。

3
然後是Busybox,這是一款高度集成的Linux小工具集合,也很容易找到,安裝好就行。

4
安裝Android VNC ,用於連接遠程桌面。

5

手機內核必須支持loop和ext2文件系統,實踐證明ext3,ext4也是可以的。
(1)檢驗是否支持loop設備
打開 終端模擬器,鍵入命令 ls /dev/block看是否有loopN設備,N是數字。
(2)ext支持不好確定,多數安卓都支持,畢竟是Linux系統出身嘛,後續交代。

6

由於sourceforge伺服器在地球的另一面的美國,所以訪問速度自然是不用吐槽的啦,不過還好鏡像伺服器還是不少的,可以網路搜索sorceforge鏡像
選擇你喜歡用的系統下載下來吧。
這里要下載兩個文件
(1)、鏡像文件
有三個版本,完整版(Large)、精簡版(smalll)、核心版(core)
可以在伺服器相應文件夾下找到zip文件,大小約500MB,解壓出來2GB左右。
* 註:完整版和精簡版有桌面程序,核心版只有命令行界面
(2)、腳本文件
在相應Linux發行版文件夾裡面找到,帶script的zip文件就是了,也下載下來。

END
二、後續操作

下載鏡像和腳本文件之後在/sdcard上創建一個文件夾,名字與相應的linux發行版名字相同,將下載到的zip文件解壓到此處,鏡像和腳本都要解壓到這個文件夾。
比如筆者的Ubuntu 10.04就是在/sdcard上創建一個名為ubuntu的文件夾,然後把ubuntu.img和ubuntu.sh解壓到/sdcard/ubuntu/即可。

然後就是最重要的一步修改腳本了,許多人不成功就是這里沒有修改了。
先看一下腳本文件吧!所有的腳本都是差不多的歐!
如圖

找到圖上第三行的位置,
mount -o remount,rw /dev/block/mmcblk0p5 /system
我們看到這是掛載/system為 可寫 狀態,但是這里卻是掛載的固定是'/dev/block/mmcblk0p5',這腫么可以??要知道安卓的硬體是遍地開花、各式各樣都有,/system的所在的設備也各不相同,比如我的是在/dev/block/mmcblk0p19,以前用的是mmcblk0p12,根本不可能統一的

所以我們需要找到/system究竟對應的是那個分區。
方法:給個比較可靠的方法吧,下載一個和你的手機相對應的刷機包,打開\META-INF\com\google\android\updater-script文件,搜索"/dev/block"關鍵字,找到一條與system相關的一行,看到了這樣一行
format("ext4", "EMMC", "/dev/block/platform/msm_sdcc.1/by-name/system", "0", "/system");
那個帶/dev/block的那個就是你的system分區,用它來替換原來腳本的那一個 /dev/block/mmcblk0p5吧!
我的修改結果是
mount -o remount,rw /dev/block/platform/msm_sdcc.1/by-name/system /system
這里因人而異,不要照搬哦!

然後打開終端模擬器,測試一下
1.輸入 su 並回車,獲取root許可權
2.輸入 cd /sdcard/ubuntu 進入腳本文件所在目錄,這里ubuntu替換你創建的文件夾名字
3.輸入 sh ubuntu.sh ,運行ubuntu系統
到這里理論上是應該成功了
出現圖一這樣的情況時就要輸入解析度了,我的是1280x720,比較常用的還有800x600等
輸入1280x720 ,回車

等待出現 root@localhost:/# 你的Linux已經啟動成功啦
終端模擬器以經連接到ubuntu的終端了
但是沒有桌面讓我們怎樣愉快的玩耍呀?
所以打開AndroidVNC,配置一下 參數
Nickname:隨便寫
Password :你的Linux名稱,我的是ubuntu
Address : 因為是本機運行,所以寫 localhost 或者 127.0.0.1
Port : 默認5900
Username:root
Color Format : 24-color (4bpp)

然後點擊左上角Connect即可
然後就看見了我們期待已久的Ubuntu界面里

但是還有個問題,不支持中文是一個蛋疼的問題啊
所以在安卓系統上找個中文ttf(直接復制/system/fonts/DroidSansFallback.ttf也是可以的)放到/sdcard
進Linux系統後復制字體到
/usr/share/fonts/truetype/ttf-dejavu
重啟就能再見到親切的中文了!

在Linux界面下
1.音量鍵相當於鍵盤的上下箭頭↑↓
2.雙指可以縮放界面,雙指滑動可以滾屏
3.按下菜單鍵-send 可以 觸發特殊鍵 比如 ctrl + alt + delete 關機重啟
4.菜單鍵- Input Mode 可以選擇 滑鼠操作方式 , 推薦選擇touchPad 把觸屏當觸摸板用

⑷ 如何把OPPO R821s的外置存儲改為內置存儲下面的命令怎麼改才能內外呼喚 dev_moun

這個是無法修改的,系統存儲不能修改的

⑸ linux下怎麼編譯單片機c代碼,怎麼下載到51單片機上呢

1.編譯軟體用sdcc
2.sdcc不支持keil51c 的一些語法。要做以下修改:
sbitled1=P1^0; 改為 #define led1 P1_0
中斷函數interrupt改為__interrupt
單個位 P1^0 改為P1_0
若vim安裝插件YCM的話,要在.ycm_extra_conf.py加入以下兩個路徑
/usr/share/sdcc/include
/usr/share/sdcc/include/mcs51
沒創建一個工程都要拷貝一份.ycm_extra_conf.py到該工程的目錄下。

3.編譯用命令
` sdcc 目標文件
4.燒錄軟體用stcflash.py,該軟體只能支持stc89c52rc,不支持stc89c52。我自己親自試過。
sudo python ./stcflash.py 目標文件

⑹ linux相同流程操作怎麼形成命令或者腳本

shell腳本後面跟文件名 sudo sh XXX.sh xxx.c
腳本里$1替換xxx.c

閱讀全文

與sdcc命令相關的資料

熱點內容
程序員在銀行開賬戶 瀏覽:513
android資料庫下載 瀏覽:744
中午伺服器崩潰怎麼辦 瀏覽:423
產品經理和程序員待遇 瀏覽:439
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:61
熱水器水量伺服器是什麼意思 瀏覽:119
stk衛星編譯 瀏覽:480
對後台程序員的要求 瀏覽:763
ios大文件夾圖標 瀏覽:628
生的計劃pdf 瀏覽:717
oppoa93加密便簽在哪查找 瀏覽:21