mmi_module_t mmi_module_info_sym = ;
mmi_module_info_sym
module_methods
module_init
pthread_mutex_init(&g_mutex, null); //初始化互斥
ret = hal_init();
devices = (struct devices *) malloc(sizeof(struct devices)); //分配裝置的記憶體
ret = hw_get_module(lights_hardware_module_id, (hw_module_t const **) &hw_module); //拉去light module
devices->lights[light_index_backlight] = get_device(hw_module, light_id_backlight); //分配light 的型別
devices->lights[light_index_keyboard] = get_device(hw_module, light_id_keyboard);
devices->lights[light_index_buttons] = get_device(hw_module, light_id_buttons);
devices->lights[light_index_battery] = get_device(hw_module, light_id_battery);
devices->lights[light_index_notifications] = get_device(hw_module, light_id_notifications);
devices->lights[light_index_attention] = get_device(hw_module, light_id_attention);
devices->lights[light_index_bluetooth] = get_device(hw_module, light_id_bluetooth);
devices->lights[light_index_wifi] = get_device(hw_module, light_id_wifi);
err = module->methods->open(module, name, &device); //開啟裝置
return (light_device_t *) device; //成功開啟裝置,返回指標
module_deinit
module_run
ret = module_run_mmi(module, params); //建立了乙個runtest的任務
pthread_mutex_lock(&g_mutex); //互斥的鎖定
ret = init(params); //初始化引數
light_delay = atoi(params["delay"].c_str()); //獲取延時的時間
params["type"].c_str() light_device = light_index_notifications; //解析指令的型別
params["color"].c_str() led_color = led_color_red;
//解析控制燈的顏色
ret = pthread_create((pthread_t *) & module->run_pid, null, run_test, (void *) module); //建立亮燈的任務
signal(sigusr1, signal_handler); //獲取訊號量,但不知道訊號量從**獲取的
enable((const mmi_module_t *) mod, true);
usleep(1000 * light_delay);
enable((const mmi_module_t *) mod, false);
usleep(1000 * light_delay);
pthread_join(module->run_pid, null); //把建立的任務加入任務聯中
pthread_mutex_unlock(&g_mutex); //解除互斥
ret = module_run_pcba(module, params); //單個指令的控制
ret = init(params); //獲取解析引數
light_delay = atoi(params["delay"].c_str());
params["type"].c_str() light_device = light_index_notifications;
params["color"].c_str() led_color = led_color_red;
enable(module, true); //開啟燈
module_stop
kill_thread(module->run_pid); //結束建立的任務
deinit(module);
enable(mod, false);
linux之點亮led燈出現的無效運算元 問題
linux中點亮led燈時出現無效運算元的錯誤,源 如下 include include include include include include include include include include include include include include volatile ...
2440裸機學習之 LED燈的控制
s3c2440有130個i o口,gpa,gpb.gpj通過設定暫存器來確定其功能。gpxcon暫存器 選擇引腳的功能,gpbcon gpjcon每兩位控制一根引腳 00表示輸入,01表示輸出,10表示特殊功能,11保留不用。gpacon特殊,每一位控制一根引腳,共23根,某位為0時,為輸出引腳,當...
jz2440 LED 裝置樹之點亮LED燈
簡介 裝置驅動程式中,匯流排驅動模型和裝置樹的差別在於平台裝置的構建不同,在傳統平台裝置驅動程式寫在c檔案中,使用裝置樹時,平台裝置之前不存在,在dts檔案中構造節點,節點裡面含有資源,裝置樹詳細的內容我會在以後的部落格中詳細介紹。cpu jz2440 u boot u boot 1.1.6 ker...