
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
在 i.MX6ull 上 ping -> Windows IP,能通则网络没有问题,开发板的MQTT客户端就能连接 Windows 上的本地MQTT服务器。笔记本电脑连接手机热点,这样的话,手机的MQTT客户端就能连接 Windows 上的本地MQTT服务器,在同一个局域网。修改配置信息后,如果客户端连接成功后,总是重复弹出Reconnecting,需要重启客户端,清掉了缓存,恢复正常。点击右上角
电脑或者手机,给开发板 发送控制指令,开发板接收指令后,下载升级包,烧录系统,重启,运行新的系统,数据区与系统隔离,用户数据不受系统升级的影响。MQTT 程序代码 mqtt_ota.c, 不会编译的话,我写过一篇buildroot sdk 的文章,里面有编译方法。打开 MQTTX 在 Windows 的客户端,也可以手机 安装客户端,订阅主题,给开发板 发送命令。下载 MQTT 主程序、2个脚本
查找 ARM 交叉编译器(只显示PATH中优先级最高的): which arm-linux-gnueabihf-gcc。查找所有同名的编译器(按PATH顺序): which -a arm-linux-gnueabihf-gcc。查找对应的 C++ 编译器:which arm-linux-gnueabihf-g++1、 cd ~切换到用户目录,然后输入下面的命令,下载压缩包。1、安装ARM交叉编译器
│└── rest_init()── 进入 rest_init(永不返回)│├── proc_caches_init()── proc 文件系统缓存初始化。│├── proc_root_init()── proc 根文件系统初始化。│├── boot_init_stack_canary()── 初始化栈 canary(防溢出)
从此,Linux 系统正式启动完成,进入了正常的运行状态:init 进程开始初始化用户空间,kthreadd 等待创建内核线程的请求,而空闲线程则在没有任务时运行。├─▶ kernel_thread(kthreadd)── 创建 PID 2 (kthreadd)├─▶ kernel_thread(init)── 创建 PID 1 (init 进程)├─▶ init_idle_bootup_task
(core dump),可以理解成:程序崩溃瞬间的一张“内存快照”+现场记录。当进程因为异常(比如abort()触发的SIGABRT)终止时,操作系统会把 进程当时的内存状态、寄存器信息等保存到一个文件里,这个文件就是核心转储文件(core file)。
所谓:异步意思是:信号什么时候来,和当前线程执行什么代码没直接关系。同步信号:当前线程执行某条指令时立即产生。即:错误由当前线程自己造成sigwait。
CPU 运行程序时,会处在不同的权限级别。用户程序运行在低权限的用户态,不能直接操作硬件,也不能直接执行内核函数。当程序需要操作文件、申请内存、访问设备、等待输入输出时,就必须通过受保护的入口进入内核,由内核代为完成。用户态 → 内核态 → 返回用户态用户态切换到内核态,发生在系统调用、中断和异常这些受保护事件中;像malloc()printf()这类函数本身不一定切换,只有它们内部需要内核服务时
正点原子 imx6ull 开发板,4.3寸屏。
客户端从服务器下载升级包,如果下载过程中断、丢包,客户端又不做校验,用损坏的文件做系统升级,会导致升级失败,校验是最后一道安全门。开发板和电脑 连接同一个wifi,让开发板和电脑在同一网段,确保开发板能ping通电脑的 ip。把 内核 设备树 和 2个 md5 文件,一起发送到Windows 的自定义目录里。开发板只能下载该目录及子目录下的文件。高(可伪造相同 MD5 的文件)电脑做服务器,开发板







