生活

mtk系统查询,MTK客户端

作者:今午信息网 来源:生活 2022-11-19 我要评论( )

很多朋友对于mtk系统查询和MTK客户端不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧! mt2523有没有atci或者cli命令可查询系统信息 1. 查询task信息 显


很多朋友对于mtk系统查询和MTK客户端不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

mt2523有没有atci或者cli命令可查询系统信息

1. 查询task信息

显示所有task信息,包括task状态,优先级信息,堆栈水位线和task的number号。

在MT2523上面,对应的ATCI命令是"AT+SYSTEM=task", 在使用前必须在project的feature.mk里面将mtk_SYSTEM_AT_COMMAND_ENABLE置为y

在MT76x7上面,对应的CLI命令是“os task”,因为CLI命令集是每个project自行定义的,所以记得将OS_CLI_ENTRY加入到您的project CLI命令集中

2. 查询系统堆信息

显示堆信息,包括堆的大小信息,当前空闲空间大小,以及空闲空间最小值。这里的单位都是字节(Byte).

在MT2523上面,对应的ATCI命令是“AT+SYSTEM=mem”, 在使用前必须在project的feature.mk里面将MTK_SYSTEM_AT_COMMAND_ENABLE置为y.

在MT76x7上面,对应的CLI命令是“os mem”,使用前也须加入OS_CLI_ENTRY您的project CLI命令集中

3. CPU利用率测量

首先,必须在project的feature.mk里面把MTK_OS_CPU_UTILIZATION_ENABLE置为y

在MT2523上面,可以用"AT+UTILIZATION=?"查询命令用法,一共有两种mode,"AT+UTILIZATION=duration,param" 是统计某一段时间内CPU 利用率,其中 param是正数,是指测量间隔,单位是tick, 1tick等于1/configTICK_RATE_HZ,而configTICK_RATE_HZ 是在project下的freeRTOSConfig.h配置。

另外一种模式是需要user 调用start/stop 命令来启动和停止测量,用户可以先用"AT+UTILIZATION=start"来启动测量,然后run需要测量的场景或应用,最后用"AT+UTILIZATION=stop"来停止测量。

在MT76x7上面,对应的CLI命令是"os cpu duration",只能测量一段时间内的CPU 利用率,

duration意义和MT2523上的ATCI命令里面的param一样。另外需要注意的是,需要把OS_CLI_ENTRY加入到project里面的CLI命令集里面。

MTK的基本码有哪些?

----------MTK6225

一:LCD

文件位于custom\drv\LCD

以华立维的一款240X320的屏为例介绍如何添加LCD驱动

gprs.mak

LCD_MODULE = HUALIWEI_SSD1289_LCM

MAIN_LCD_SIZE = 240X320

Option

COM_DEFS_FOR_HUALIWEI_SSD1289_LCM = HUALIWEI_SSD1289_LCM SSD1289 COLOR_LCD TFT_MAINLCD QVGA_MAINLCD

在custom\drv\LCD添加HUALIWEI_SSD1289_LCM文件夹,下面有5个文件。文件名同MTK系统自带的(lcd.c lcd_hw.h lcd_sw.h lcd_sw_inc.h lcd_sw_rnd.h)。

HUALIWEI--------------屏的厂家

SSD1289-----------------屏的驱动芯片

LCM----------------------屏

240X320-----------------屏的分辨率

COLOR_LCD----------彩色

TFT_MAINLCD-------屏的类型,对应的还有CSTN,OLED。目前主要是TFT

QVGA_MAINLCD----屏的分辨率

做了上述修改以后,编译时,lcd驱动就对应HUALIWEI_SSD1289_LCM文件夹里的驱动。文件夹里的5个文件,通常lcd_hw.h, lcd_sw_rnd不需要修改。lcd_sw_inc.h只是定义屏的分辨率。如下:

#ifdef __MMI_MAINLCD_128X128__

#define LCD_WIDTH 128

#define LCD_HEIGHT 128

#elif (defined(__MMI_MAINLCD_128X160__))

#define LCD_WIDTH 128

#define LCD_HEIGHT 160

#elif (defined(__MMI_MAINLCD_176X220__))

#define LCD_WIDTH 176

#define LCD_HEIGHT 220

#elif (defined(__MMI_MAINLCD_240X320__))

#define LCD_WIDTH 240

#define LCD_HEIGHT 320

#endif

#define UI_DEVICE_WIDTH LCD_WIDTH

#define UI_DEVICE_HEIGHT LCD_HEIGHT

修改比较多的是lcd.c和lcd_sw.h。

Lcd_sw.h

#define LCD_CMD_DMA_MODE---------是否使用DMA方式?(DMA简单,速度快,通过MTK的寄存器进行操作,但灵活性差。非DMA方式,直接对地址操作,灵活性好,但速度会有影响。目前,一般都是用DMA方式)

#define LCD_16BIT_MODE-----------------lcd使用16位总线?(由硬件决定)

#define LCD_SSD1289_CTRL_ADDR LCD_PARALLEL0_A0_LOW_ADDR

#define LCD_SSD1289_DATA_ADDR LCD_PARALLEL0_A0_HIGH_ADDR

#define MAIN_LCD_CMD_ADDR LCD_SSD1289_CTRL_ADDR

#define MAIN_LCD_DATA_ADDR LCD_SSD1289_DATA_ADDR

#define MAIN_LCD_OUTPUT_FORMAT LCM_16BIT_16_BPP_RGB565_1

#define LCD_delay_SSD1289() \

{\

volatile kal_uint16 iI; \

for (iI = 0; iI 0x20; iI++);\

}

#ifdef LCD_CMD_DMA_MODE-------------DMA方式

#define LCD_SEND_DMA_CMD(n) \

{\

while (LCD_IS_RUNNING);\

DISABLE_LCD_TRANSFER_COMPLETE_INT;\

DISABLE_ALL_LCD_LAYER_WINDOW;\

SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\

ENABLE_LCD_ROI_CTRL_CMD_FIRST;\

SET_LCD_ROI_WINDOW_SIZE(0, 0);\

START_LCD_TRANSFER;\

while (LCD_IS_RUNNING);\

}

#define LCD_CtrlWrite_SSD1289(_data) \

{\

SET_LCD_CMD_PARAMETER(0, LCD_CMD, _data);\ --------写的是命令

LCD_SEND_DMA_CMD(1);\

}

#define LCD_DataWrite_SSD1289(_data) \

{\

SET_LCD_CMD_PARAMETER(0, LCD_DATA, _data);\ --------写的是数据

LCD_SEND_DMA_CMD(1);\

}

#else ----------非DMA方式

#define LCD_CtrlWrite_SSD1289(_data) \

{\

*(volatile kal_uint32 *) LCD_SSD1289_CTRL_ADDR = _data;\ --------写的是命令

LCD_delay_SSD1289();\

}

#define LCD_DataWrite_SSD1289(_data) \

{\

*(volatile kal_uint32 *) LCD_SSD1289_DATA_ADDR = _data;\------------写的是数据

LCD_delay_SSD1289();\

}

#endif

#define LCD_DataRead_SSD1289 (*(volatile kal_uint16 *)LCD_SSD1289_DATA_ADDR);

------用于读LCD id,兼容lcd用。(这个需要硬件上接读lcd的信号)

Lcd.c

LCD_Funcs LCD_func_SSD1289 = {

LCD_Init_SSD1289,

LCD_PWRON_SSD1289,

LCD_SetContrast_SSD1289,

LCD_ON_SSD1289,

LCD_BlockWrite_SSD1289,

LCD_Size_SSD1289,

LCD_EnterSleep_SSD1289,

LCD_ExitSleep_SSD1289,

LCD_Partial_On_SSD1289,

LCD_Partial_Off_SSD1289,

LCD_Partial_line_SSD1289,

LCD_GetParm_SSD1289,

LCD_SetBias_SSD1289,

LCD_Contrast_SSD1289,

LCD_LineRate_SSD1289,

LCD_Temp_Compensate_SSD1289

#ifdef __LCD_ESD_RECOVERY__

,LCD_ESD_check_SSD1289

#endif

};

void LCD_FunConfig(void)

{

MainLCD = LCD_func_SSD1289;

}

上层通过这个LCD_func_SSD1289来调用相应的lcd驱动函数的。这个结构体里的很多函数不需要修改。经常需要修改的有以下几个函数:

LCD_Init_SSD1289(), LCD_BlockWrite_SSD1289(), LCD_EnterSleep_SSD1289(),

LCD_ExitSleep_SSD1289()。

这其中,LCD_Init_SSD1289(), LCD_EnterSleep_SSD1289(), LCD_ExitSleep_SSD1289(),屏厂会提供,只需要按照写就可以了。LCD_BlockWrite_SSD1289()需要根据LCD的datasheet写。

见ssd1289+2.2topsun-init.txt

LCD_Init_SSD1289()

{

……………….

LCD_CtrlWrite_SSD1289(0x0000);

LCD_DataWrite_SSD1289(0x0001);

LCD_CtrlWrite_SSD1289(0x0003);

LCD_DataWrite_SSD1289(0xa8a4);

…………………

}

void LCD_BlockWrite_SSD1289(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)

{

…………………….

SET_LCD_CMD_PARAMETER(0,LCD_CMD, 0x4E); ---------表示寄存器

SET_LCD_CMD_PARAMETER(1,LCD_DATA, startx); ----------表示寄存器中的值

SET_LCD_CMD_PARAMETER(2,LCD_CMD, 0x4F);

SET_LCD_CMD_PARAMETER(3,LCD_DATA, starty);

SET_LCD_CMD_PARAMETER(4,LCD_CMD, 0x44);

SET_LCD_CMD_PARAMETER(5,LCD_DATA, (((endx 0x00ff)8) | (startx 0x00ff)));

SET_LCD_CMD_PARAMETER(6,LCD_CMD, 0x45);

SET_LCD_CMD_PARAMETER(7,LCD_DATA, starty);

SET_LCD_CMD_PARAMETER(8,LCD_CMD, 0x46);

SET_LCD_CMD_PARAMETER(9,LCD_DATA, endy);

SET_LCD_CMD_PARAMETER(10,LCD_CMD, 0x22);

ENABLE_LCD_TRANSFER_COMPLETE_INT;

ENABLE_LCD_ROI_CTRL_CMD_FIRST;

SET_LCD_ROI_CTRL_NUMBER_OF_CMD(11);

START_LCD_TRANSFER;

}

具体的寄存器意义,见datasheet SSD1289_1.1.pdf (P51)datasheet。这个是一般的lcd调试,特殊的不做描述。

在硬件没有问题的情况下,lcd没有点亮,可做如下动作:

1) 在LCD_Init_SSD1289()函数下加

{

lcd_drive_ic_id = LCD_DataRead_SSD1289;

}

2) LCD_Init_SSD1289()增大lcd复位时间

{

SET_LCD_CTRL_RESET_PIN;

LCD_Delay100us(1000);

CLEAR_LCD_CTRL_RESET_PIN;

LCD_Delay100us(1000);

SET_LCD_CTRL_RESET_PIN;

LCD_Delay100us(1000);

}

3) LCD_Init_SSD1289()添加测试代码

{

{

unsigned int m,n;

GPIO_ModeSetup(25, 0);

GPIO_InitIO(1, 25);

GPIO_WriteIO(1, 25);

for(m=0; m240; m++)

for(n=0; n320; n++)

{

LCD_DataWrite_SSD1289(0xf800);

}

}-----------用于判断初始化代码是否正确

}

4) 修改时序,主要是写的时序void init_lcd_interface(void)

{

SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);

SET_LCD_PARALLEL_CE2WR_HOLD_TIME(4);

SET_LCD_PARALLEL_CE2RD_SETUP_TIME(3);

SET_LCD_PARALLEL_WRITE_WAIT_STATE(7);

SET_LCD_PARALLEL_READ_LATENCY_TIME(31);

SET_LCD_ROI_CTRL_CMD_LATENCY(10);

}

5) 初始化正确的前提下,检查函数LCD_BlockWrite_SSD1289()。这个时候,屏上应该有显示了。只是显示不正常。

二:键盘

通常只需要修改keypad_def.c文件。

一般硬件会提供如下

C0 C1 C2 C3 C4

R1 UP 7 Right 9 VOL+

R2 左软件 OK Down 3 VOL-

R3 SEND 0 8 # 播放/暂停

R4 Left 1 2 右软 快退

R5 * 4 5 6 快进

软件只需要填进去就可以了。

const keypad_struct keypad_custom_def = {

{

DEVICE_KEY_SK_LEFT,

DEVICE_KEY_SEND,

DEVICE_KEY_SK_RIGHT,

DEVICE_KEY_UP,

DEVICE_KEY_VOL_UP,

DEVICE_KEY_NONE,

DEVICE_KEY_END,

DEVICE_KEY_1,

DEVICE_KEY_4,

DEVICE_KEY_7,

DEVICE_KEY_MENU,

DEVICE_KEY_VOL_DOWN,

DEVICE_KEY_NONE,

DEVICE_KEY_END,

DEVICE_KEY_2,

DEVICE_KEY_5,

DEVICE_KEY_8,

DEVICE_KEY_DOWN,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_END,

DEVICE_KEY_3,

DEVICE_KEY_6,

DEVICE_KEY_9,

DEVICE_KEY_LEFT,

DEVICE_KEY_FUNCTION,

DEVICE_KEY_NONE,

DEVICE_KEY_END,

DEVICE_KEY_STAR,

DEVICE_KEY_0,

DEVICE_KEY_HASH,

DEVICE_KEY_RIGHT,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_END,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_NONE,

DEVICE_KEY_END

},

Custom_Keypress_Period,

};

三:音频PA开关 afe.c

void AFE_SwitchExtAmplifier( char sw_on )

{

if( sw_on )

{

GPIO_WriteIO( 1, 5 );----------使用的是GPIO5,每个项目会不同,需根据硬件修改

}

else

{

GPIO_WriteIO( 0, 5 );

}

}

mtk系统 .dat文件怎么用

我在我公司里做过这个MTK平台上的归属地查询,

先说明下,MTK平台上本身是不带归属地查询功能的,都是第三方或者手机开发商自己做上去的程序。你现在说的下载了两个.dat文件,放到内存卡上,必须是你手机上烧的版本,要支持这种程序,就是说你手机里本身已经有归属地功能,只是缺失了相应的数据文件:城市区号文件、号码段文件。你把文件放上就能用了。

如果你手机上烧的版本,根本就没带归属地功能;或者带了,但文件需求格式又不是这个目录、或者这种数据文件类型,那你就算把这2个文件放上去,也是没有用的。

友情提示:一般手机上带归属地功能的,都不会把数据文件放在内存卡上,怕丢失了,归属地功能就不能用了。。。都会编译成资源,放在版本里一起烧到手机上的

至于你说的mrp格式,我倒不清楚有没有了

你网上随便下的MTK系统用的归属地数据文件,基本上是不能用的。。


反对 0举报 0 收藏 0 打赏 0评论 0

转载请注明出处。

暂无关键词

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

网友点评
0相关评论