=nsynote-嵌入式&软件使用

462 阅读27分钟

嵌入式

//操作2的几次方的乘除法,都用移位操作,不要直接用乘除

//常用的三大低速串口:uart串口通信,spi读写flash,i2c读写eeprom

//Intel和AMD的PC处理器普遍采用**小端模式**(Little-Endian)

//设置寄存器时:


1) 要设置 bit n:

val = data\_reg;

val = val | (1<<n);

1) 要清除 bit n:

val = data\_reg;

val = val & ~(1<<n);

//cortex-M内核的芯片可以运行ucLinux吗? A:LIUNX的内存管理要用到MMU,现在M3大多都不

缩略语

//XTAL - 表示外部晶振(或外接晶振)(External Crystal Oscillator)

TOSC - Timer Oscillator

根文件系统(rootfs=Root Fils System)

复位和时钟控制 (RCC)

数字摄像头接口 (DCMI)

独立看门狗 (IWDG)

窗口看门狗 (WWDG)

控制器区域网络 (bxCAN)

安全数字输入/输出接口 (SDIO)

随机数发生器 (RNG)

灵活的静态存储控制器 (FSMC)

毫秒:时间单位,符号ms(英语:millisecond ). 1000 毫秒 = 1秒

微秒:时间单位,符号μs(英语:microsecond ). 1,000 微秒 = 1毫秒

SS模式 =从动串行

电子硬件

//EPLD和CPLD没有区别,EPLD只是altera早期对于CPLD的叫法

//我的感悟:

做嵌入式产品有很多种做法,简单的做可以是用plc来做,用树莓派来做,用单片机来做,用arm来做,每一轮的话成本和难度都不一样。

如果实现一个功能,先不用考虑代价地实现它,然后大规模生产时使用替代芯片或者方案来实现。比如先用arduino或者树莓派搞,再自己画板子搞。

//

烙铁使用教程: v.youku.com/v\\\\\\\\\\…

//结温(Junction Temperature)是电子设备中半导体的实际工作温度。在操作中,它通常较封装外壳温度(Case Temperature)高。温度差等于其间热的功率乘以热阻。

最大结温在指定一个组成成分的数据,并给定功耗的情况下,计算外壳与环境之间热阻。或者反过来可以帮助设计人员确定一个合适散热器。

//单纯使用声卡作为虚拟示波器,存在频率较低的问题,只有100khz以内的采样,对于检查单片机频率不够。

//在电子电路中,VCC是电路的供电电压(C=circuit 表示电路的意思, 即接入电路的电压), VDD是芯片的工作电压(D=device 表示器件的意思, 即器件内部的工作电压),一般VCC>VDD

VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压;

GND(Ground)代表地线或0线,GND就是公共端的意思,也可以说是地,但这个地并不是真正意义上的地。是出于应用而假设的一个地,对于电源来说,它就是一个电源的负极。

//LEGO MINDSTORMS Robotics Invention System (RIS) was released in October1998

RCX Code, the graphic programming system supplied with the kit, and NQC, the most widespread independent language for the RCX.

RCX only gates to the external world are a small display, three input ports, three output ports, four push-buttons, and an infrared (IR) serial communication interface.

处理器 Hitachi H8300,使用电池保存程序,电池掉电则程序丢失

//淘宝的使用CH340 的通过usb来控制 继电器的串口命令:


a00100a1

a00101a2

a00201a3

a00200a2

a00301a4

a00300a3

图片.png

//小玩具马达的功率 = 5V x 0.35A = 1.75W

//生成dump文件:

objdump -D vmlinux > vmlinux.dump

U-boot

//uImage和zImage的区别

  1. 指令的区别:启动uImage 用bootm; 启动zImage 用go;

  2. 文件区别:uImage 在zImage加了0x40(63) 个字节, 包含这个映像文件的类型、加载位置、生成时间、大小等信息;

  3. bootm uImage 会把bootargs 传给uImage; go zImage 不会给zImage 传递任何东西;

//zImage 是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。

几种linux内核文件的区别:

1、vmlinux 编译出来的最原始的内核文件,未压缩。

2、zImage 是vmlinux经过gzip压缩后的文件。

3、bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。

4、uImage U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。

5、vmlinuz 是bzImage/zImage文件的拷贝或指向bzImage/zImage的链接。

6、initrd 是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。

//uboot的模拟参考!:blog.csdn.net/jqh\\\\\\\\…

1、生成配置文件, make ARCH=arm vexpress_ca9x4_defconfig

2、编译Uboot, make ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi- -j4

3、开启模拟:qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot --nographic

labcenter Proteus

//.dsn格式和.pdsprj格式都是Proteus软件中保存工程文档的格式。

.dsn格式是Proteus 7版本及更早版本使用的格式,而.pdsprj格式是Proteus 8版本及更新版本使用的格式。这两种格式都是为了方便用户在不同版本之间打开和编辑工程文档。

在Proteus 7版本及更早版本中,用户可以打开并编辑.dsn格式的文档,但不能打开.pdsprj格式的文档。

因此,.dsn格式和.pdsprj格式之间的关系是它们都是用于保存Proteus工程文档的格式,但它们分别代表了不同版本的Proteus软件。

//Proteus 8可以仿真:8051,8086、AVR(含Arduino)、PIC、HC11、MSP430、ARM7TDMI、Cortex-M0/3/4,TI PICCOLO开发板(基于TMS320Piccolo处理器) 、树莓派3/4/zero (可安装GrovePi HAT)等常用的MCU.

Q:proteus 能把pcb设计导入嘉立创,制作pcb板吗

A:Proteus 本身不支持直接将 PCB 设计文件导入到嘉立创(JLCPCB)进行 PCB 制作。不过,你可以通过以下步骤将 Proteus 中的原理图和 PCB 设计转换为嘉立创可以接受的格式:

1. 从 Proteus 导出设计文件
  1. 导出原理图和网络表

    • 在 Proteus 中打开你的原理图文件。
    • 选择 File > Export > Schematic,导出原理图文件(通常是 .sch 格式)。
    • 选择 File > Export > Netlist,导出网络表文件(通常是 .net 格式)。
  2. 导出 PCB 文件

    • 在 Proteus 中打开你的 PCB 文件。
    • 选择 File > Export > PCB,导出 PCB 文件(通常是 .pcb 格式)。
2. 使用第三方工具转换文件格式
  1. 使用 KiCAD 进行转换

    • 安装 KiCAD:下载并安装 KiCAD。

    • 导入 Proteus 文件

      • 打开 KiCAD,选择 File > Import > Proteus,导入你的 .sch.pcb 文件。
    • 导出为嘉立创支持的格式

      • 在 KiCAD 中,选择 File > Export > Gerber Files,导出 Gerber 文件(用于 PCB 制作)。
      • 选择 File > Export > Netlist,导出网络表文件(通常是 .net 格式)。
3. 导入到嘉立创
  1. 创建嘉立创项目

    • 登录嘉立创官网,创建一个新的 PCB 项目。
    • 选择 File > Import > Gerber Files,导入你从 KiCAD 导出的 Gerber 文件。
    • 选择 File > Import > Netlist,导入你从 KiCAD 导出的网络表文件。
  2. 检查和调整设计

    • 在嘉立创的 PCB 设计界面中,检查导入的元件和连接是否正确。
    • 进行必要的调整和优化,确保设计符合嘉立创的制造要求。
4. 提交制造
  1. 提交制造请求

    • 完成设计后,点击 Submit for Manufacturing 按钮,提交制造请求。
    • 嘉立创会进行设计审核,确保设计符合制造标准。
注意事项
  • 元件库匹配:Proteus 和嘉立创在元件库和元件命名上有所不同,可能会导致一些元件在导入时无法识别。因此,在导入前需要检查一下原理图中的元件库和命名是否与嘉立创中的相同,以避免导入后出现错误。
  • 手动调整:如果自动转换过程中出现任何问题,可能需要手动调整部分电路连接。

通过以上步骤,你可以将 Proteus 中的原理图和 PCB 设计转换为嘉立创可以接受的格式,进行 PCB 制作。

OS-embed_linux

//linux kernel 配置项

配置项备注
CONFIG_TTY_PRINTK串口

// objdump -t obj:输出目标文件的符号表 

// GNU binutils(二进制工具集),主要包括GNU链接器(ld)和GNU汇编器(as)和一些工具组成。这些工具有:


addr2line – 可执行文件地址到源文件名和行信息转换工具。

ar – 归档文件(archive)管理工具。

c++filt – C++符号过滤工具。

gprof – 显示程序profiling(中文待定“剖析”?)信息工具。

nlmconv – 转换目标代码至NLM(NetWare Loadable Module)。

nm – 从目标代码文件中列举出所有变量。

objcopy – 转换目标文件格式。

objdump – 显示目标文件信息。

ranlib – 为归档文件生成索引以加快对归档文件的访问。

readelf – 显示ELF(Executable and Linking Format)文件信息。

size – 列出目标文件或模块的大小信息。

strings – 显示文件中的可打印信息。

strip – 删除文件中的连接符号,以减少目标文件大小。

windres – MS Windows 资源文件编译工具,这个对我们用不到。

//查看可执行文件由那些库组成:


[nisy@localhost test]$ ldd ./gtk-test

linux-gate.so.1 (0xb7710000)

libpoppler-glib.so.8 => /run/media/nisy/sda7_ubuntu/opt/\*source_code\*/_code/poppler/poppler-0.48.0_gtk/glib/libpoppler-glib.so.8 (0xb76ae000)

libgtk-3.so.0 => /lib/libgtk-3.so.0 (0xb6f32000)

libgdk-3.so.0 => /lib/libgdk-3.so.0 (0xb6e41000)

libcairo.so.2 => /lib/libcairo.so.2 (0xb6d02000)

// By default, gcc searches the following directories for header files:

/usr/local/include/

/usr/include/

and the following directories for libraries:

/usr/local/lib/

/usr/lib/

// ar 程序将使我们有机会将多个目标文件打包成一个库文件;objcopy可以让我们将一种格式的目标文件内容转换成另一种格式的目标文件。

目前比较流行的目标文件格式有COFF(Common Object File Format)和ELF(Executable and Linking Format)。

//gcc的调试信息:

-g参数:

产生符号调试工具(GNU 的 gdb)所必要的符号信息,要想对源代码进行调试,就必须加入这个选项。 g 也分等级,默认是-g2, -g1 是最基本的, -g3 包含宏信息,-g0则没有调试信息

-ON参数:

指定代码的优化等级为 N,可取值为 0、 1、 2、 3; O0 没有优化, O3 优化级别最高

//可以通过code block的source code formatter 插件功能优化代码的格式,也可以使用: indent -kr -i8 main.c

来优化代码风格,-kr选项表示K&R风格,-i8表示缩进8个空格的长度。如果没有指定-nut选项,则每8个缩进空格会自动用一个Tab代替,基本上-kr -i8这两个参数就够用了。

//make -n 即显示会执行什么命令,但是不实际执行,可以用来检查makefile执行的步骤

//CMMI 安装, 即Configure、Make、Make Install

//编译的程序运行完直接退出了,可以在

main()的return前加一个

scanf("%c");

等用户输入字符后再退出。

//gcc开启调试:需要有-g选项,同时,不能有-s选项( -s Remove all symbol table and relocation information from the executable.).

//使用#error 时需要注意会导致编译终止:

#error "aaa"   //会导致停止编译,并编译时报错aaa

#warning "aaa"   //不会导致停止编译,并编译时告警aaa

//linaro和codesourcery都是支持linux工具链的公司

//#pragma pack来改变编译器的对齐方式,比如:


#pragma pack(n) /\\* 指定按n字节对齐 \\*/

#pragma pack() /\\* 取消自定义字节对齐 \\*/

//#pragma warning

该指令允许选择性地修改编译器警告信息。

例子:

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

等价于:

#pragma warning(disable:4507 34) // 不显示4507和34号警告信息

#pragma warning(once:4385) // 4385号警告信息仅报告一次

#pragma warning(error:164) // 把164号警告信息作为一个错

//DEV-CPP中如何看内存,如下:

print /x \&name\[0]

获得内存地址:

执行:

x /32bc  0x62fe10

查询地址的内容

//Q:Dev-CPP中如何在debug时带入入参?

A:如下如果入参需要加一个 -help,则类似如下步骤操作,就进入 -help 分支了(使用的gdb的 "run 参数列表" 命令):

//嵌入式系统中gpio如果是输出pin,则先高/低电平,再配置方向,因为如果先配置方向,则有可能出现电平掉低又拉高,导致触发外围器件,比如CPLD芯片进入PROGRAM状态。

//有时为了查一个宏是否开启了,在代码中插入AAA或者BBB,但是如果是头文件查宏开关用AAA,BBB,编译报错的是某某C语言报错,比较难查,所以在头文件中推荐还是#error "AAA" 这种方式最佳。

// 数组赋值,采用如下的方式比较简洁:

#include <stdio.h>\

#include <stdlib.h>

struct  PPP\

{\

    char a;\

    char b;\

    char c;\

};\

    \

int main(int argc, char \*argv[]) {\

int i ;\

struct PPP kk[10] = {\

    [0] = {0,0,0},\

    [1] = {1,1,1},\

    [3] = {3,3,3},\

    [4] = {4,4,4},\

    [9] = {20,20,20}\

    };\

    for(i =0;i<10;i++)\

    {\

        printf("[%d]-> %d \n",i, kk[i].a);\

    }\

  \

    return 0;\

}

显示结果:

 //看log时,经常需要分析一个函数(比如下面的at45dbx_chipselect_df())是具体被哪个函数调用的,如果每个地方都添加打印,就要修改n个地方,非常麻烦,其实可以通过修改这个函数,把调用者的行号打印出来,这样log中打印出来的行号(比如 “-->at45dbx_chipselect_df_2nd:line= 234”),快速甄别出是被哪个函数调用的。

修改前:


static void at45dbx_chipselect_df(U8 memidx, Bool bSelect)

{

xxxxx

}

修改后:

#define at45dbx_chipselect_df(a,b)   at45dbx_chipselect_df_2nd(a,b, \*\*LINE\*\*)

static void at45dbx_chipselect_df_2nd(U8 memidx, Bool bSelect , int line)

{

printf(“-->at45dbx_chipselect_df_2nd:line=%d” , line);

xxxxx

}

//看一个软件底层使用的哪些库的方法

//cortex-M内核的芯片可以运行ucLinux吗?

A:LIUNX的内存管理要用到MMU,现在M3大多都不带MMU,但是ucLinux去掉了linux的MMU。

==

不爱说话

33楼

高级工程师 | 2019-2-22 09:30 | 只看该作者

STM32最好429及以上的芯片跑uClinux还可以试试。太早的芯片没有FMC接口不能外扩SDRAM,用pSRAM又太小众太贵。

这是我这些年来用STM32跑uClinux的心得体会。

==

尽管uClinux不需要MMU,但需要大量的Flash和SRAM。另外,处理器必须能够高速运行。当前,只有高端Cortex-M3 / M4 MCU可以满足这些要求。也许uClinux也将很快在Cortex-M7上可用。

//我的理解:虚拟机和qemu 是一类的,仿真的是guest硬件 +guest OS,而docker 直接仿真的是guest OS的bin/lib ,所以效率高。

//查busybox的版本号:

$/bin/busybox --help

BusyBox v1.1.3 (2009.09.12-18:22+0000) multi-call binary

//嵌入式linux系统的小系统=uboot+kernel+文件系统(如busybox,yocto)

//strace - trace system calls and signals

源码中的if语句或其他代码在相应strace输出中并没有体现,因为它们并没有唤起系统调用。strace只关心程序与系统之间产生的交互,因而strace不适用于程序逻辑代码的排错和分析。

默认情况下,strace只跟踪指定的进程,而不对指定进程中新建的子进程进行跟踪。使用-f选项,可对进程中新建的子进程进行跟踪,并在输出结果中打印相应进程PID:

:使用strace跟踪挂死程序,如果最后一行系统调用显示完整,程序在逻辑代码处挂死;如果最后一行系统调用显示不完整,程序在该系统调用处挂死。

当程序挂死在系统调用处,我们可以查看相应系统调用的man手册,了解在什么情况下该系统调用会出现挂死情况。另外,系统调用的参数也为我们提供了一些信息,例如挂死在如下系统调用:

read(16,

那我们可以知道read函数正在对文件描述符为16的文件或socket进行读取,进一步地,我们可以使用lsof工具,获取对应于文件描述符为16的文件名、该文件被哪些进程占用等信息。

//ftrace 是内建于 Linux 内核的跟踪工具,从 2.6.27 开始加入主流内核。使用 ftrace 可以调试或者分析内核中发生的事情。ftrace 提供了不同的跟踪器,以用于不同的场合,比如跟踪内核函数调用、对上下文切换进行跟踪、查看中断被关闭的时长、跟踪内核态中的延迟以及性能问题等。

使用 ftrace ,首先要将其编译进内核。内核源码目录下的 kernel/trace/Makefile 文件给出了 ftrace 相关的编译选项。

OS- Ethernut&Nut/OS

//编译:

使用Configurator 生成makefile

C:\ethernut-4.10\nutbld 下执行make

OS-ecos

//.ecm :eCos Minimal Configuration 只出现在hal文件夹下面

Most HAL packages include a .ecm file that can be imported, along with using the RedBoot template, in order to set up the packages needed to build the RedBoot ROM monitor for a specific platform.

.ecc :eCos Configuration(The saved configuration file contains all of the packages loaded, template used, option settings, and description information, which the Configuration Tool uses to generate the proper eCos image.)一个项目工程的配置文件,相当于工程文件

//compat用于实现兼容性的软件包

//ecos的生成:

|__ \redboot_build

|__ \redboot_install

| |__ \include

| |__ \lib

| | |__ libtarget.a

| |__ \bin

|__ \redboot_mlt

Project-Openwrt

//Q:又见炊烟 wrote: 请问一下,想找个简单的路由器,入门玩玩openwrt,可以用哪种呢? A:咸鱼上找7620的路由器, 一般20-30元的,基本都能刷。 要兼顾一下性能的话, 推荐中兴8820v2 ,二手8-9新的,30-40元吧,mtk7621的处理器,带有硬件NAT加速功能,16闪存+64MB运存,5个千兆有线网口,2.4+5GHz双频(300+866Mbps)无线 基本上学习+实用都能兼顾,是性价比不错,刷机也方便的一款. 追求更多功能的话,可以考虑中兴的8820s, 50-60元,同样处理器和无线,但是闪存128MB,内存256MB,能安装几十种功能软件,运行流畅。

//【终极小鸟】北大街57号 18:57:21

有没有国内用的比较广泛的,不用改硬件的路由器啊

【高级老鸟】往事 18:57:32

如果你想要便宜发,去咸鱼买D525双网口

【高级老鸟】往事 18:57:36

百来块钱

【高级老鸟】往事 18:57:53

这是入门级的

【高级老鸟】往事 18:59:04

再上一个档次,一般就是J1900,不过就稍微贵点了

【高级老鸟】往事 18:59:21

再网上就是I3 I5 I7了

D525整机功耗大概十来W,也还能接受

【终极小鸟】北大街57号 19:02:10

嗯嗯

【小小鸟蛋】小小 19:02:15

@北大街57号 很多 华硕的N-18U AC-68U 都是可以的吧

竞斗云也可以闲鱼看看

Project-R2S

//调试串口的接法:

靠近边缘是黑色,向里是红色和白色

Project- Arduino

//注意,arduino的串口只能波特率9600,即使修改

Serial.begin(9600);

为其他波特率也不生效,这个参数根本就没有被使用。

//[置顶]arduino相关的函数和外设库参考:

www.arduino.cc/reference/e…

www.arduino.cc/en/Referenc…

ArduinoDuemilanove

Duemilanove(意大利语“2009”的意思)是已生产的最流行的Arduino电路板之一,已取代了它之前的版本Arduino Diecimila。但现在,它又被更新的Arduino Uno所取代。Duemilanove的特色是使用了供电自动切换电路,自动选择从USB还是从外部电源供电。它还使用了ATmega328处理器,但2009年3月之前的版本采用的仍然是ATmega168。它的引脚布局和运算能力与Uno相同,只是它使用FTDI芯片实现USB转串口通信。

如果你打算买一片新的Arduino,那就应该选择ArduinoUno。如果你已经有一片Duemilanove,并且需要更稳定的3.3 V电压或者想做一些基于ATmega8U2的高级编程,那么可以考虑将其升级为Uno。

国内使用比较多的为Arduino Duemilanove 2009,主要原因是

Uno的usb控制芯片封装方式改变,制造成本上升,其他变化不大,

性价比还是Arduino Duemilanove 2009比较好。

//ICSP = in circuit serial programmable (在线串行编程),就是PIC系列单片机的在线调试器MAPLAB ICD2在线烧写程序的方式。

//调试Arduino需要使用诸如如下的代码:

Use the begin() method of the Serial class in the setup() method of your application

to set the communications speed:

int speed = 9600;

void setup() {

Serial.begin(speed)

}

然后:

you can send data from your Arduino controller to your computer using the print()

method:

Serial.print(data)

//An Arduino library is generally made up of four parts:, an .h file, a .cpp file, a

keywords.txt file that highlights Arduino library words in the IDE, and the actual binary

library code.

MCU

//ESP8266 是单核 Tensilica L106 (32位MCU)的Wi-Fi芯片,主频最高可达160MHz。

ESP32 是双核Tensilica L108 (32 位MCU)的Wi-Fi芯片,主频更高可达250MHz,性能更强,内存更大有400KB SRAM。另外还集成了蓝牙BLE。

由于ESP32的MCU性能更强,内存更大,可以处理包括音频、视频在内的更复杂Wi-Fi应用。还可以应用在需要蓝牙和Wi-Fi共存的IOT场景中。

MCU-51

//keil rtx51tiny最小占用2KB(官方的参考用例 \keil_c51\C51\RtxTiny2\Examples\Ex1\编译后 )

//89C51和89C52区别:

//89S51相对于89C51增加的新功能包括:

-- ISP在线编程功能,这个功能的优势在于改写单片机存储器内的程序不需要把芯片从工作环境中剥离。是一个强大易用的功能。

-- 最高工作频率为33MHz,大家都知道89C51的极限工作频率是24M,就是说S51具有更高工作频率,从而具有了更快的计算速度。

-- 具有双工UART串行通道。

-- 内部集成看门狗计时器,不再需要像89C51那样外接看门狗计时器单元电路。

-- 双数据指示器。

-- 电源关闭标识。

-- 全新的加密算法,这使得对于89S51的解密变为不可能,程序的保密性大大加强,这样就可以有效的保护知识产权不被侵犯。

MCU- AVR

//很多朋友的51 单片机都是从AT89C51 这款芯片开始的, 而这家公司也推出过基于ARM9 内核的处理器,只不过普及度不高。为了发挥它们的优势,它们还把曾经在单片机圈非常火爆的AVR单片机做成了32 位版本的AVR32 , 它不是ARM 内核, 但希望以此与ARM 竞争,结果是现在很少有人听说过AVR32。 AR M的地位不可动摇, 大部分厂商还是乖乖地生产ARM 处理器。

//目前AVR 单片机高级语言发发工具主要有IAR C、WINAVR、ICCAVR、CodeVision、BASCOM-AVR(BASIC 语言)。IAR 是与AVR 内核协同开发的,很多对AVR 更适合C 语言开发方面的改进是根据IAR开发过程的,它也是ATMEL 公司推荐的C 语言编译器,但它的价格几呼让人难以接受,达到上万元人民币。ICCAVR 是国内AVR 主要推广单位双龙公司代理的C 编译器,它价格低廉,性能也XX,友好的界面把很多烦琐的项目管理和编译设置隐藏了起来,为此它受部分开发人员的欢迎。CodeVision 也是个很不错的C 编译器,目前在国内也有一定数量的用户。Winavr 是个免费的AVR 开发程序集,它以著名的自由软件GCC 为C/C++编译器。

//中兴的coremark的5档次 4k-10k-80k-160k-400k

我的华为笔记本是123K:

<

无法复制加载中的内容

//

生成object 文件:avr-gcc –mmcu=at90s2313 –o demo1.elf demo1.o

生成elf文件:avr-gcc –mmcu=at90s2313 –o demo1.elf demo1.o

生成hex文件:avr-objcopy -j .text -j .data -O ihex demo1.elf demo1.hex

ARM Cortex-M

//新版的STM Cube集成了 TouchGFX(嵌入式GUI界面) 以及低功耗蓝牙BLE协议栈等

//STM32CubeIDE内部就集成了STM32CubeMX的插件,所以在STM32CubeIDE 里可以使用STM32CubeMX。

//

ARM Cortex-A

//i.MX 6ULL Arm Cortex-A7 单核 792 MHz,基于ARMv7-A

AM335X TI的ARM Cortex-A8

Roc-rk3288 瑞芯微的四核Cortex-A17,频率高达1.8GHz

Roc-rk3399 瑞芯微两个Cortex-A72 + 四个Crotex-A53核心,组成big.LITTLE大小核架构六核ARM Cortex-A 64位处理器

//跟GUI没有关系 是芯片决定用的什么版本的linux

不带gui的原因,一般都是cpu不支持屏幕

//The Versatile Express platform provides an environment for developing SoC designs. Arch Linux ARM specifically targets the Motherboard Express uATX system using one of the available CoreTile Express daughtercards.

Supported CoreTiles:

  • V2P-CA5: 2x Cortex-A5 100MHz
  • V2P-CA9: 4x Cortex-A9 400MHz ==> 宋宝华《Linux设备驱动开发详解》使用
  • V2P-CA15 (TC1): 2x Cortex-A15 1GHz
  • V2P-CA15-CA7 (TC2): 2x Cortex-A15 1GHz, 3x Cortex-A7 800MHz ==>《奔跑吧Linux内核》使用

Android BSP

//adb root

adb remount

adb shell //执行shell命令的环境

adb logcat >~/0705.log //保存log

其他

// 就单片机来说,protues 支持我们通常用的C语言,而multisim目前只支持汇编。之后自学单片机用的开发板其实是可以在protues上做一个的。protues支持与keil的联调,就是用keil中的调试功能,一行一行运行代码,然后在protues上显现出相应的效果。multisim在其他电路上貌似更专业,更强大。

multisim 可以支持的MCU有 PIC16F84/16F84A 和8051单片机

其他

//从二进制文件中搜索ascii和unicode,可以使用 strings软件: learn.microsoft.com/en-us/sysin…

C:\Users\nisy>strings


Strings v2.54 - Search for ANSI and Unicode strings in binary images.

Copyright (C) 1999-2021 Mark Russinovich

Sysinternals - [www.sysinternals.com](http://www.sysinternals.com)

  


usage: strings [-a] [-f offset] [-b bytes] [-n length] [-o] [-s] [-u] <file or directory>

-a   Ascii-only search (Unicode and Ascii is default)

-b   Bytes of file to scan

-f   File offset at which to start scanning.

-o   Print offset in file string was located

-n   Minimum string length (default is 3)

-s   Recurse subdirectories

-u   Unicode-only search (Unicode and Ascii is default)

-nobanner

    Do not display the startup banner and copyright message.

用法:

strings sbldump.bin  > 1.txt

软件使用

Mysql

//SQL stands for Structured Query Language. 结构化查询语言

SQL is a standard language for accessing and manipulating databases.

//MySQL的后台程序是mysqld,监听默认端口为3306的查询请求,客户机程序是mysql

Sketch up

//当您在建模时,SketchUp会用颜色精确的反馈您的鼠标在3D模型空间中的位置。绿色点= 终点, 红色点= 在边上, 青色点= 边线中点,蓝色点= 在表面。红、绿、蓝色线分别代表X、Y、Z三个坐标轴的方向。紫红色线代表有物体平行或是垂直于特定的边。

//为了得到您想要的点或边线,您只需要在SketchUp中旋转您的鼠标,当您的鼠标经过时,SketchUp应该会记住您需要的正是这个点。按下SHIFT 键可以进行捕捉和锁定方向和点。

//平移- 在转动时,按住键盘上的shift键可以进行平移。

//使用组件可以使您的模型更小并且更有效果。要创建组件的话,只需要选择要创建成组件的几何体,然后点击鼠标右键,选择“创建组件”菜单。组件很容易编辑,如果您对其中的一个组件做出改变,其它相同组件也会发生相应的变化。如果在SketchUp中,有许多几何体的话,您应该保证他们都是组件。如果您需要组件的话,可以试着到3D Warehouse中去搜索

//您知道可以通过页面为您的模型创建动画吗?要想创建页面,请到“窗口”菜单下面选择“页面”工具。您可以通过点击页面对话框中的“ + ”号图标来添加页面。改变您模型中的视角,并为每个视角增加一个页面。创建完毕后,您可以随时通过单击模型窗口上方的页面标签来激活一个页面。要链接所有有页面成一段动画的话,请到“查看”菜单下面,从“动画”菜单的子菜单中选择“播放”菜单。页面是一个可以应用于很多方面的强大工具。

Eclipse

//打开变量的declaration,使用“open declaration”或者按F3.

得到函数被调用的地方,使用CTRL + SHIFT +G

////eclipse 的快速打开文件:ctrl +shift +r 打开 "Open Resource" ,然后输入文件名;或者使用[CTRL]+[H] 来搜索文件

//eclipse 的界面使用SWT,netbeans使用swing.

//eclipse 可以在已有的C代码文件夹建立工程,建立的工程名称为 .project 和 .cproject

Octave

//R – 实数

F- 浮点数

C-复数(Complex Number)

V-矢量(Vector)

amn :矩阵中的m表示行(row),n表示列(column)

vmware

//vmware中主机和虚拟机相互ping通的配置:

image

//VMware Player 使用时间长之后磁盘空间会变得比较大,我们可以使用如下命令

来压缩磁盘空间:

在VMware Player里的Ubuntu Linux下输入:

$ sudo vmware-toolbox-cmd disk shrink /

其他

//用硬盘给文件做备份:使用 freefilesync.org的开源软件同步

//Q: 怎样搜索excel文档中的问号(“?”)

A:?在excel中是通配符,表示任何1个字符,所以不能直接查找,否则返回所有1个字符的结果。如果需要查找通配符本身时,需要在通配符前面加~,这样就可以查找到通配符本身。EXCEL中另外一个通配符\*,*表示任意字符串,查找*本般的方法也是需要在\*前加一个~。

//微信删除/拉黑后还可以收发消息吗?微信科普:拉黑——自己可以发消息给对方,对方只能收到而不能回复信息;删除——双方都不能发送信息。拉黑后双方的聊天记录还在,删除后聊天记录将被清除。

拉黑/删除后还可以重新添加回来吗?拉黑状态下,只需将对方解除黑名单即可恢复好友关系;删除状态下,可以从共同群聊添加回来,对方不会收到提示,也可以重新通过验证添加回来。

对方知道被拉黑/删除了吗?拉黑时,对方给你发消息会收到提示:消息已发出,但被对方拒收了。删除时,对方给你发消息会收到提示:开启了朋友验证,你还不是他(她)朋友。也可以重新通过验证添加回来。

//开启 Chrome 的 Tab Freeze 功能:Chrome://flags,直接搜寻 Tab Freeze,有几个选项可以选,分别功用如下:

Enabled:当未使用分页超过 5 分钟后就会自动冻结,当你去点击该分页时会自动重新整理

Enabled Freeze(No Unfreeze):当未使用分页超过 5 分钟后就会自动冻结,当你去点击该分页时不会自动重新整理

Enable Freeze(Unfreeze 10 s every 15min.):当未使用分页超过 5 分钟后就会自动冻结,每过 15 分钟自动回复 10 秒

//firefox 中临时保存的书签放到书签栏,这样换一台电脑或者系统,仍然能够快速找到这个临时书签。

//xournal 种pdf的批注和普通pdf批注完全不一样,比如以前pdf可能有矩形方框,使用xournal 修改后导出pdf,会发现完全没有了之前的批注,但是之前批注的效果还在;如该自己使用xournal 的涂鸦来涂画,也不会出现在批注里面。

//virtualbox添加硬盘:

创建虚拟硬盘之后需要挂载到虚拟机上,已经挂载的虚拟硬盘是RAW格式的,需要格式化,如果是WINDOWS客户机,用我的电脑-》管理->存储->磁盘管理进行分区和格式化。

如果是linux系统,开机后检查/DEV/目录下是否有sdb(现在一般linux硬盘都是认成这个名字)这个标志文件,如果有的话使用fdisk /dev/sdb分区并格式化。格式化完成后按照相应分区格式使用mount命令挂载。

//专业无线电对讲机

专业无线电对讲机的使用者大都是在群体团队的专业业务中使用。因此,专业无线电对讲机的特点是,功能简单实用。在设计是都留有多种通信接口供用户作二次开发。其频率报设置大都是通过计算机编程,使用者无法改变频率,其面板显示的只是信道数,不直接显示频率点,频率的保密性较好,频率的稳定性也较高,不易跑频。

在长期工作中,其稳定性、可靠性都较高,工作温度范围较宽,一般都在-30度到+60度。专业机的工作频率在VHF段时一部分V高段(148-174MHZ)和V低段(136-160MHZ)。另有一部分是全段(136-174MHZ)。但在UHF频段,大部分分U高段(450-470MHZ)和U低段(400-430MHZ),极少数是U全段(400-470MHZ)。专业机的性能、可靠性、稳定性较业余机高,其价格自然比业余机要高,有的甚至高出很多。

业余无线电对讲机

[民用对讲机]

民用对讲机

专为满足无线电爱好者使用而设计、生产的无线电对讲机。这类对讲机又可称为“玩机”,玩对讲机的爱好者称为“HAM”或者“火腿”。由于无线电对讲机的频率范围有限,使用的环境条件及使用要求和专业对讲机有所区别。业余机的主要特色是,体积要小巧、功能要齐全、可进行频率扫描,可在面板上直接置频,面板上显示频率点。其技术指标、设备的稳定性、频率稳定性、可靠性以及工作环境也相对专业无线电对讲机要差些。其直接结果是业余机成本也较低些,以适应个人购买的需要。

针对这种业余的个人无线电业务,各个国家都开辟了专用频段分配给业余无线电运动爱好者使用。我国开辟的频段为144-146MHZ和430-440MHZ,世界各国一般也都是这一频段。2001年10月信息产业部国家无线电管理局发布的《中华人民共和国无线电频率规划》中的对业余无线电爱好者和业余业务专门有说明“业余业务:供业余无线电爱好者进行自我训练、相互通信和技术研究的无线电通信业务。业余无线电爱好者系指经正式批准的、对无线电技术有兴趣的人,其兴趣纯系个人爱好而不涉及谋取利润。”

//用word查看字符Unicode码值:

按快捷键Alt+X,光标前面的字就会自动转成Unicode编码了。在菜单:插入-〉符号中还可以修改编码,那么ASCII,GB都可选了。当然如果你是支持繁体的word我想一定会有BIG5的。