杰发或MTK芯片下使用/sys/cli/commands文件来操作内核
使用/sys/cli/commands文件来操作内核:
源代码:atc_linux\kernel\kernel-3.18\drivers\misc\atc\drvcli\cli_uart.c:drvcli_init()建立”/sys/cli/commands”文件,它的commands_store()函数相当于从串口读取了一个命令 -> cli_init() -> CliThreadProc()根据/sys/cli/commands文件的内容来调用命令表对应项来处理命令, x_cli_attach_cmd_tbl(CLI_GetDriverCmdTbl(), CLI_CAT_DRV, CLI_GRP_NONE); 说明命令字符需要以”drv”开头 -> CLI_GetDriverCmdTbl() -> _arDrvCmdTbl 命令需要以”drv.xxx”开头 -> _arAudCmdTbl 命令需要以”drv.aud”开头 ->
{TEXT(“log”), TEXT(“log”), _CLI_AudTurnOnLog, NULL, 命令需要以”drv.aud.log”开头 -> _CLI_AudTurnOnLog -> CLI_AUD_IOCTL() -> #define CLI_AUD_IOCTL() AudSetCliCmd(tCliCfg.eAudCliType, tCliCfg.u4arg1 -> AudSetCliCmd()
举例:
echo “drv.aud.log” > /sys/cli/commands 表示打开audio的log。
echo “drv.aud.dbg 304 0 0” > /sys/cli/commands 表示使用audio的dbg功能,304表示AUD_CLI_BASSM,第一个0表示DspGetSpeakerConfig显示DSP信息,第二个0没用。
echo “drv.aud.dbg 304 2 0” > /sys/cli/commands 表示使用audio的dbg功能,304表示AUD_CLI_BASSM,2表示vWriteDspShmWORD写DSP信息,0表示写入的值。
echo “drv.aud.dbg 304 3 0” > /sys/cli/commands
echo “drv.memory.ior 0x000a7418” > sys/cli/commands 表示使用memory的io读功能,要在串口才能看到操作结果,参数为地址。
echo “drv.memory.iow 0x000a7418 0xff001000” > sys/cli/commands 表示使用memory的io写功能,要在串口才能看到操作结果,参数为地址、值,皆为32位。这个例子调节cvbs rvc的亮度。
echo “drv.memory.r 0x001a7418” > sys/cli/commands 表示使用memory的内存读功能,要在串口才能看到操作结果,参数为地址,如果刚好操作缺页则会导致page fault。
echo “drv.memory.w 0x001a7418 0xff001000” > sys/cli/commands 表示使用memory的内存写功能,要在串口才能看到操作结果,参数为地址、值,皆为32位,如果刚好操作缺页则会导致page fault。