如何通过算法较好地完成一件事?
如何较好地完成一件事?不准备: 行言谦虚谨慎,举止大方得体。(最高境界)可准备: 提前评估,预判风险,胸中有数,自信践行。总结:无论大事小事,第一步必须提前预估风险,这也是一种习惯。Mode算法处理对象:预估未发生事情风险的准确率期待效果:将准确率无限提升(全家的事件体验很好)特征集合:时间、地点、涉及人物以及各方合理性Demo处理对象:本周日带小孩去拍百日照 -- 小事期待效果:可以考虑周全,开开心心地完成这件事收集事件相关特征集合:天气:W时间:.
linux驱动框架结构体总结1
Linux字符设备驱动是Linux驱动开发的基础,而 Linux字符设备驱动得开发要遵循一定得模式和规则。对于 Linux 这样一个成熟、庞大、复杂的操作系统,代码的重用性非常重要,所以一般都会采用驱动分隔的方式来简化驱动的开发。其中每个不同的框架关键是实现几个关键的结构体。一 字符设备基础 struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize
STM32跑MicroPython的链接脚本分析
一链接脚本的简单常识有时候我们很多文件需要链接到指定的区域,或者叫做段里面,比如在 Linux 里面初始化函数就会放到 init 段里面。因此我们需要能够自定义一些段,这些段的起始地址我们可以自由指定,同样的我们也可以指定一个文件或者函数应该存放到哪个段里面去。要完成这个功能我们就需要使用到链接脚本,链接脚本用于描述文件应该如何被链接在一起形成最终的可执行文件。其主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的文件一般都包含 text 段、 data 段
U-Boot 顶层 Makefile 分析二
6、代码检查uboot 支持代码检查,使用命令“make C=1”使能代码检查,检查那些需要重新编译的文件。“make C=2”用于检查所有的源码文件# Call a source code checker (by default, "sparse") as part of the# C compilation.## Use 'make C=1' to enable checking of only re-compiled files.# Use 'make C=2' to enable che
Uboot启动内核和根文件系统命令分析
uboot有两种启动 Linux 内核和rootfs的方法,一种是直接从flash(nand或emmc)启动,一种是从网络启动。这里面用到了两个非常重要的环境变量bootcmd 和 bootargs。一、bootcmd 和 bootargs 环境变量bootcmd 保存着 uboot 默认命令, uboot 倒计时结束以后就会执行 bootcmd 中的命令。这些命令一般都是用来启动 Linux 内核的,比如读取 EMMC 或者 NAND Flash 中的 Linux 内核镜像文件和设备树文件到 DRAM
menuconfig 图形化配置
uboot 或 Linux 内核可以通过输入“make menuconfig”来打开图形化配置界面, menuconfig是一套图形化的配置工具,需要 ncurses 库支持。 ncurses 库提供了一系列的 API 函数供调用者生成基于文本的图形界面 menuconfig 重点会用到两个文件: .config 和 Kconfig, .config 文件保存着 uboot或 Linux 内核 的配置项,使用 menuconfig 配置完 uboot或 Linux 内核 以后肯定要更新.config
常用 Shell 命令
1、目录信息查看命令 ls Shell 下文件浏览命令为 ls,格式如下:ls [选项] [路径] ls 命令主要用于显示指定目录下的内容,列出指定目录下包含的所有的文件以及子目录,它的主要参数有: -a 显示所有的文件以及子目录,包括以“.”开头的隐藏文件。 -l 显示文件的详细信息,比如文件的形态、权限、所有者、大小等信息。 -t 将文件按照创建时间排序列出。 -A 和-a 一样,但是不列出“.” (当前目录)和“…” (父目录)。 -R 递归列出所有文件,包括子目录中的
VI/VIM 编辑器
Ubuntu自带了 VI 编辑器, VIM 编辑器是 VI 编辑器升级版本, VI/VIM 编辑器都是一种基于指令式的编辑器,不需要鼠标,也没有菜单,仅仅使用键盘来完成所有的编辑工作。安装 VIM 编辑器命令如下:sudo apt-get install vim VIM 编辑器有 3 种工作模式:输入模式、指令模式和底行模式,通过切换不同的模式可以完成不同的功能。 VIM默认是以只读模式打开的文档,因此我们要切换到输入模式,切换到输入模式的命令如下: i 在当前光标所在字符的前面,转为输
linux内核的设备匹配方法
一、设备匹配方法1.1、未使用设备树的设备匹配方法在没有使用设备树以前, uboot 会向 Linux 内核传递一个叫做 machine id 的值, machine id也就是设备 ID,告诉 Linux 内核自己是个什么设备,看看 Linux 内核是否支持。 Linux 内核是支持很多设备的,针对每一个设备(板子), Linux内核都用MACHINE_START和MACHINE_END来定义一个 machine_desc 结构体来描述这个设备,比如在文件 arch/arm/mach-imx/mach
设备树在linux系统中的体现
Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的**/proc/devicetree** 目录下根据节点名字创建不同文件夹,如图 所示: /proc/device-tree 目录下是根节点“/”的所有属性和子节点。1、根节点“/”各个属性 在图中,根节点属性表现为一个个的文件,如图 “#address-cells”、“#size-cells”、“compatible”、“model”和“name”这 5 个文件,它们在设备树中就是根节点的 5个属性。可以输入cat
编译树莓派Linux内核
Raspberry Pi 内核Linux代码存储在 GitHub 中,可以在github.com/raspberrypi/linux上查看。一、下载linux内核源码git clone --depth=1 https://github.com/raspberrypi/linux 上面的命令将下载当前的活动分支。省略–depth=1将下载整个存储库,包括所有分支的完整历史记录,但占用更多的存储空间。要下载不同的分支,可以使用以下–branch选项:git clone --depth=1 --b
Linux内核工程目录分析
1、arch 目录这个目录是和架构有关的目录,比如 arm、arm64、avr32、x86 等等架构。每种架构都对应一个目录,在这些目录中又有很多子目录,比如 boot、common、configs 等等。以 arch/arm 为例其子目录用于控制系统引导、系统调用、动态调频、主频设置等。arch/arm/configs 目录是不同平台的默认配置文件:xxx_defconfig。arch/arm/boot/dts 目录里面是对应开发平台的设备树文件。arch/arm/boot 目录下会保存编译出来的
linux内核链接脚本
linux kernel不直接提供链接脚本, 而是提供了一个汇编文件vmlinux.lds.S,经过编译之后会生成vmlinux.lds链接脚本文件。vmlinux.lds.S文件在arch/arm/kernel/文件目录中。linux内核不提供.lds的脚本文件, 却提供一个汇编文件的原因是因为内核编译需要条件编译, 而脚本文件是写死的, 不能条件编译。因此要先写一个有条件编译的汇编文件, 然后再使用这个汇编文件进行条件编译得到.lds链接脚本文件。通过分析 Linux 内核的连接脚本文件 arch/
树莓派linux led字符设备驱动(搭建开发环境)
一、在本地搭建环境1.1、获取树莓派Linux内核版本 输入指令:uname -r 结果为:pi@raspberrypi:~ $ uname -r5.10.17-v7l+ 可知Raspber Pi系统的Linux 内核为 5.10.17-v7l+ 版本,所以下载版本为5.10.y。树莓派linux源码在GitHub上,链接地址为:https://github.com/raspberrypi 也可以通过git clone --depth=1 --branch rpi-5.10.y ht
树莓派OS Lite系统安装LXDE桌面环境
参考官方主页:https://www.raspberrypi.org/forums/viewtopic.php?t=133691一、安装配置Raspberry Pi OS Lite1.1、安装Raspberry Pi OS Lite 按照https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit所示安装系统。登录系统用户名是pi,密码是raspberry。1.2、配置WI-FI 1、输入指令:
今日推荐
周排行