精华内容
下载资源
问答
  • 串口,网卡,usb口等,然后引导系统运行)2、linux系统 (真正的操作系统)3、你的应用程序 (基于操作系统的软件应用)当你开发板上电时,uboot运行,就会把串口设备初始化好,能够往串口输出打印信息。还可以接受你...

    满意答案

    板子软件分三部分:

    1、uboot (负责初始化基本硬件,如串口,网卡,usb口等,然后引导系统运行)

    2、linux系统 (真正的操作系统)

    3、你的应用程序 (基于操作系统的软件应用)

    当你开发板上电时,uboot运行,就会把串口设备初始化好,能够往串口输出打印信息。还可以接受你透过电脑的串口助手从串口发来的信息。它把你的信息解释成命令,然后转到系统执行。

    你用QT也可以自己写个仿照终端命令 一样的应用程序,接收UDP来的数据,同时返回一个同样的数据,好像就是在屏幕上输入一样。然后用switch解释后,用system() 或 QProcess 来执行相应的命令。你还可以把执行后的信息透过udp发送回去。就像udp收到文字“ls”

    QProcess p(0);

    p.start("cmd", QStringList()<

    p.waitForStarted();

    p.waitForFinished();

    QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput());

    然后把 strTemp 透过udp发回去。就仿佛是在终端打ls命令一样了。

    00分享举报

    展开全文
  • 在测试过程中发现,有三种类型的打印,一是uboot的打印,在Starting kernel ...之前的打印都是;二是prink的打印,linux kernel不能用printf,对应的输出函数是printk,它的实现在kernel/printk.c中;三是应用层的...

    项目中用到串口通信,但是这个串口也用于控制台。为了保证串口通信时不能有控制台发出的消息,需要关闭打印。

    在测试过程中发现,有三种类型的打印,一是uboot的打印,在Starting kernel ...之前的打印都是;二是prink的打印,linux kernel不能用printf,对应的输出函数是printk,它的实现在kernel/printk.c中;三是应用层的printf。

    1、去掉printk打印

    在linux内核中的/kernel目录下printk.c文件中有一个函数:

    static void __call_console_drivers(unsigned long start, unsigned long end)

    {

    struct console *con;

    for (con = console_drivers; con; con = con->next) {

    if ((con->flags & CON_ENABLED) && con->write)

    con->write(con, &LOG_BUF(start), end - start);

    }

    }

    去掉如下两行重新编译内核即可:

    if ((con->flags & CON_ENABLED) && con->write)

    con->write(con, &LOG_BUF(start), end - start);

    2、标准输出、标准错误输出重定向

    int main() {

    int pid = 0;

    // fork a worker process

    if (pid = fork()) {

    // wait for completion of the child process

    int status;

    waitpid(pid, &status, 0);

    }

    else {

    // open /dev/null

    int fd_null = open("/dev/null",O_RDWR);

    if(dup2(fd_null, 1) == -1)

    return 1;

    if(dup2(fd_null, 2) == -1)

    return 1;

    XX_run();

    }

    return 0;

    }

    我将标准输出和错误输出重定向到/dev/null中

    如果我没有将输出重定向,只是关闭输出,close(1) close(2),程序经常出现错误,这个还需要继续研究。

    展开全文
  • 哪位大神分析一下,谢谢 一般他们的输出的内容都差不多吧,
  • 在开发板调试过程中,遇到过一个很奇怪的问题,串口突然疯狂打印乱码,整个console变得无法控制,但是通过telnet进行网络连接后,查看ps,并没有异常的进程。 给出推论 不断的寻找该原因,完全无法找到。 查看.bash_...

    嵌入式开发板调试中的串口问题

    问题提出

    在开发板调试过程中,遇到过一个很奇怪的问题,串口突然疯狂打印乱码,整个console变得无法控制,但是通过telnet进行网络连接后,查看ps,并没有异常的进程。

    给出推论

    不断的寻找该原因,完全无法找到。
    查看.bash_history发现该问题,在history中有执行乱码命令,非常奇怪,因为执行了该命令,代表这串口输出的数据实则是信号输入,然后串口进行的一个回显,也就是说这个打印的乱码其实是类似于我们输入进去的信号。

    结论验证

    推出这一结论之后,就可能尝试验证这一想法,就是通过检测txd、rxd的信号,示波器测试之后发现,txd和txd的信号一模一样,也就是说产生了自激振荡样式的问题,串口由一个信号产生振荡,自己的输出又成了自己的输入,疯狂的陷入了一个死循环,但是Linux系统又是没有死掉的,不过是疯狂的进入串口中断,造成一点点的系统卡顿。
    至此得出了这一难题的结论,硬件方面不知道为何导致了两个IO口产生了串扰,导致自激振荡的产生。希望存在该问题的朋友能在此处找到答案。

    展开全文
  • Linux debug串口的释放

    2021-01-14 16:58:03
    文档时间:2018-10-09模块平台:EC25EFALinux的默认控制台是debug串口,想要改变控制台,首先需要释放debug...1,Aboot启动过程中会默认向debug串口打印消息,想取消这些打印信息,需要进行修改并重新编译aboot。...

    文档时间:2018-10-09

    模块平台:EC25EFA

    Linux的默认控制台是debug串口,想要改变控制台,首先需要释放debug串口。

    释放debug串口的步骤主要分为三步:1.禁止aboot的log输出 2.禁止linux启动过程的log输出 3.取消linux console控制台。

    1,Aboot启动过程中会默认向debug串口打印消息,想取消这些打印信息,需要进行修改并重新编译aboot。

    1),添加打印关闭宏

    vim apps_proc/bootable/bootloader/lk/project/mdm9607.mk

    2),添加DEFINES += DEBUG_LOG_DISABLE=1宏

    3),修改 uart_dm.c(位于xxx/apps_proc/bootable/bootloader/lk/platform/msm_shared/目录下)

    #ifdef DEBUG_LOG_DISABLE

    static unsigned int

    msm_boot_uart_dm_write(uint32_t base, char *data, unsigned int num_of_chars)

    {

    return MSM_BOOT_UART_DM_E_SUCCESS;

    }

    #else

    /** UART transmit operation*/

    static unsigned intmsm_boot_uart_dm_write(uint32_tbase, char *data, unsigned intnum_of_chars)

    {

    。。。

    }#endif

    红色部分为新增代码

    4),重新编译aboot

    rebake virtual/bootloader

    2,禁止linux启动过程的log输出

    在linux启动过程中,会打印出一些信息,想去除这些消息,需要进行修改aboot传给linux kernel的启动参数

    1),禁止linux启动过程输出log请在sdk目录执行以下命令($为命令行提示符)

    $ sed -i 's/console=ttyHSL0,115200,n8/console=disable/g' ql-ol-extsdk/tools/quectel_mkboot/mkqcomboot

    2),重新编译内核

    $ make kernel

    NOTE:

    1),如果想恢复linux启动log:sed -i 's/console=disable/console=ttyHSL0,115200,n8/g' ql-ol-extsdk/tools/quectel_mkboot/mkqcomboot

    2),禁止log不能使用make debug_kernel_menuconfig来配置内核,否则内核会崩溃

    3,取消linux console控制台

    Linux console控制台的指定在rootfs中的/etc/inittab文件中,修改此文件就可以取消linux console控制台。

    首先打开inittab文件,例如:vim ql-ol-rootfs/etc/inittab

    注释掉指定console控制台的语句

    重新编译rootfs

    make rootfs

    4,验证

    完成1,2,3步骤后,使用adb重新下载aboot,kernel和rootfs,开机后debug串口不在有任何输出,使用adb shell可以登录上去就说明释放debug串口成功

    展开全文
  • 1、应用背景:调试android recovery时,由于recovery默认的日志是存储...无法看到相关的日志,因此这时候可以使用本文中提供的方法将相关日志从调试串口输出,直接用串口在升级过程中查看日志。2、实现思路实现思路...
  • kernel启动过程中的调试打印

    千次阅读 2016-05-26 14:59:01
    内核启动过程中涉及到多个地方,启动过程的代码由汇编代码和C代码组成。其中的打印函数也有多个。 1. 汇编阶段 打印函数包括如下几种: printascii printch printhex8 printhex4 printhex2这些函数定义在...
  • 这里对uboot的启动参数有一个疑问,也是学习过程中没有掌握的知识点,启动参数中设置波特率,与后面要改的晶振时钟两者之间的联系。如果启动参数中没有设置115200,只是对晶振的初始值修改为12MHz,能否解决乱码问题...
  • 1、应用背景:  调试android recovery时,由于recovery默认的日志是存储到/cache相关文件夹下的...无法看到相关的日志,因此这时候可以使用本文中提供的方法将相关日志从调试串口输出,直接用串口在升级过程中查看日
  • 一、前言 在调试Android的Linux内核时,我们往往会通过打开对应模块的...D:/Kernel.log 但是dmesg通常只能打印部分Log信息,如果连续输入命令,在保存的日志文件中可能会出现很多重复内容,这是因为dmesg会打印启动...
  • Linux内核启动过程

    千次阅读 2020-06-29 11:09:38
    终于找到一篇文章明白了内核启动过程,记录分享一下,若有侵权则删。 原文链接:http://www.0511zz.com/html/sheji/jc/2018/0815/149280.html 嵌入式linux内核的启动全过程主要分为三个阶段。第一阶段为内核自解压...
  • Platform: RK3399 OS: Android 6.0 Version: v2017.03 串口无任何输出无法输入 串口有输出为乱码
  • 在linux启动过程打印调试信息

    千次阅读 2011-12-06 16:46:22
    在linux内核启动入口打印调试信息 上网查到linux内核启动入口在head.S,例如我现在用的是arm,就是arch/arm/kernel/head.S。head.S里有一个过程stext。 我在stext开始加了一个bl printascii,想看这时候能不能打出...
  • 处理器启动过程

    千次阅读 2017-04-25 08:59:00
    1 处理器启动过程简介 处理器上电后,PC寄存器固化了一个默认值 PC默认值用于决定第一条执行的指令 第一条执行指令隶属于启动程序 2 启动程序(BootLoader) 系统上电后运行的第一个程序(Not Os) 根据运行阶段、...
  • 熟悉8266的读者应该都知道8266有两个串口,芯片在上电的过程中,同时会在串口0和串口1输出一些信息,这些信息似乎是固化在芯片里面了一样,无论在程序中如何设置都无法屏蔽。 ↑ 无法屏蔽的上电信息 如果系统...
  • S3C2416裸机开发系列十_串口打印调试

    千次阅读 2014-04-06 23:14:20
    串口打印调试 象棋小子 1048272975 在嵌入式软件开发过程中,往往都会用到串口进行打印信息以跟踪调试代码的运行。只要在代码的关键位置加入打印函数,即可分析代码在这一位置的关键参数是否正确,运行状态是否...
  • Linux支持串口输出的方法网上介绍很多,因为Linux发行版不同,可能不是那么通用,是否通用本人无法验证,本文只在以下系统中测试通过添加过程注意大小写,特别是ttyS0CentOS release 5.3(Final)Kernel 2.6.18-164.e15 on ...
  • ZYNQ7020-linux下使用pl端扩展串口抛出问题Q1:UBOOT可以启动,内核无法启动Q2:配置完串口后,UBOOT 和 内核都无输出打印一、vivado中使用PL端串口IP新建工程二、制作系统三、调试串口 写在前面:本文用于记录自己...
  • 串口调试软件sscom32

    2018-10-12 18:16:37
    如果你使用的系统是Windows8或者windows 8.1,而且是ghost或者其他非正版系统,并且使用过各种优化工具精简优化系统,那么在安装驱动程序的过程中,你可能会遇到“数据无效”的错误 “数据无效”解决方法如下: 1、...
  • Linux启动过程详解

    2020-12-29 11:11:45
    Linux启动过程详解作者:江远航一、启动流程图如下图1 Linux启动流程图BIOS ---> MBR---> Kernel---> Init二、Linux启动顺序一> BIOS初始化1、电脑周边设备检查侦测周围设备是否正常工作,如CPU类型、...
  • linux内核启动过程分析

    千次阅读 2018-10-30 09:36:45
    kernel的Makefile比uboot的Makefile要复杂,在这里不需要一行一行的详细分析,只需要关注在配置编译过程需要用到的地方,其他的地方可以不管。 (1)Makefile开始定义了kernel的版本号,这个版本号很重要...
  • 嵌入式linux屏蔽终端串口打印的信息

    千次阅读 2014-01-08 14:52:25
    《ARM Linux开发-warewin 2G/3G无线传输(DTU)和...整个系统运行过程分3个部分:bootstrap、uboot、内核及根文件系统,bootstrap由at91sam9260在从片内启动,运行bootstrap串口打印信息,但at91sam9260芯片启动
  • 芯片平台一般会有好几个串口,具体采用哪个串口做为调试串口在uboot或者lk中可以设定,并通过cmdline来告知kernel,kernel在启动时会对cmdline进行解析,根据cmdline的解析结果,调用串口注册函数,对相应的串口进行...
  • 所以,我们可以通过设定 “console”这个参数的值,来命令行界面、串口打印信息输出到哪一个设备。现在我们不需要命令行界面和串口打印信息,可以将 console的值设为 NULL。 如何直接在Linux系统通过u-boot传递...
  • 将SFUQ(1046CPU)的boot从C600分支(2017 11) 移入到uniboot分支(src2017 07)中,移植内容主要增加了SFUQ的私有驱动, 目前,已经可以编译出u-boot.bin,移植过程中主要解决了一些未定义、重定义的变量和函数。...
  • 屏蔽linux 的启动打印信息

    千次阅读 2017-08-23 22:55:49
    内核启动过程中的打印都是通过printk()输出的,按照重要程度,内核把这些打印分类为8个级别: ============== include/linux/printk.h 7 14 =================== #define KERN_EMERG "<0>" /* system is ...
  • linux 内核早期打印

    2021-05-15 05:58:58
    这样就需要一项一项排查错误,当错误被排查完毕,通常打印出 start_kernel …是种必然,如果打印出这仪信息说明 Kernel已进入到start_kernel() 执行,如果此时有串口启动打印就比较成功了,如果仍然没有打印启动信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,759
精华内容 5,503
关键字:

串口打印启动过程