原创 ndk addr2line工具的使用

addr2line是一個十分有用的debug工具,這個工具在ndk的安裝目錄下就有 在ndk \toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin目錄下

原创 gcc 如何編譯so 和 objdump 反彙編

1、打開cygwin 終端 2、切換到源碼所在目錄 3、通過gcc編譯 輸入:gcc test.c -fPIC -shared -o libtest.so -fPIC 作用於編譯階段,告訴編譯器產生與位置無關代碼(Positio

原创 Multimedia Alooper 機制分析

android  底層的錄製和播放都會用到ALooper,AHandler和AMessage,這個和上一篇講的looper有什麼不一樣呢?其實作用是差不多的,只是實現的方式不一樣而已。 1、looper線程的創建 status_t ALo

原创 html頁面實現文件上傳

因爲業務的需求,需要實現一個通過瀏覽器把本地文件上傳到服務器的功能,因爲之前沒有做過,所以也是經過了一番探索才實現了這個功能,這裏只介紹前端的實現,後臺的接收、驗證和保存就不介紹了。 這個流程如下: 1、讀取本地文件 2、建立和服務器的連

原创 android 關機流程詳細分析

前面的博客有提到過android事件上報流程,InputReaderThread 從EventHub讀到按鍵事件後,交給InputDispatcher 往上上報,我們從這裏跟蹤一下長按power鍵關鍵流程, frameworks/nat

原创 Opengrok服務搭建

OpenGrok是一個快速,便於使用的源碼搜索引擎與對照引擎,在android源代碼中搜索一些關鍵信息,如果使用這個引擎,會十分方便,下面就介紹如何搭建這樣一個服務。 1、下載jdk 下載網址:http://www.oracle.co

原创 linux 進程的創建和加載

我們還是一cameraserver進程爲例,看它是如何被系統加載運行起來的。 frameworks/av/camera/cameraserver/cameraserver.rc 1 service cameraserver /syste

原创 android 開機流程詳細分析

arm平臺開機的時候,會先跑ic內部的rom code,rom code把flash上的uboot加載到dram中,然後執行uboot。不同的ic廠商uboot實現可能不一樣,有些廠商會把uboot拆分爲兩個部分,第一部分會先加載到ic內

原创 linux kernel 簡介

linux kernel construction overview linux kernel 大致分爲上圖五大部分。 1、進程管理    負責進程的創建和銷燬,進程的調度。   2、內存管理    負責內存的分配和回收,記錄哪些內

原创 linux 進程和線程簡介

1、進程的概念 進程是一個具有一定獨立功能的程序關於某個數據集合的一次運行活動。它是操作系統動態執行的基本單元,在傳統的操作系統中,進程既是基本的分配單元,也是基本的執行單元。 2、輕量級進程 輕量級進程由clone()系統調用創建,參數

原创 scons入門

scons是一個Python寫的自動化構建工具,可以用來編譯代碼,和make作用相似 1、安裝python sudo apt-get install python3 sudo apt-get install python3-pip 2、更

原创 jdbc 連接mysql異常及插入中文出現亂碼

1、調用getConnection()連接數據庫就會報出異常 DriverManager.getConnection(SQL_URL, SQL_USERNAME, SQL_PASSWORD); 通過控制檯打印看到,每次調用這個函數就會

原创 eclipse 啓動的web服務,如何在url中不加項目名直接訪問

剛開始在eclipse 開發和調試web服務器,用的是tomcat,啓動服務後,在瀏覽器中輸入:localhost:8080 老是會報異常,並且也無法訪問到歡迎頁面,必須要加上項目名才 可以,例如localhost:8080/{proj

原创 freertos task創建和 queue使用簡述

freertos中的task可以任務是一個線程,它是freertos系統調度的一個單位,使用xTaskCreate() 可以創建出task,函數原型如下 BaseType_t xTaskCreate(TaskFunction_t pxT

原创 alsa amixer 使用介紹

alsa-utils 提供的工具中,arecord 可以用來錄音,aplay 可以用來播放,amixer 可以用來控制音量、增益等。 / # amixer controls numid=34,iface=MIXER,name='Mast