资讯
论坛
词条
众包
招聘
商城
下载
问答
博客
工程师家园
帮助
搜索
登录
立即注册
一牛网论坛
一流研发工程师学习交流分享电子技术的论坛!
工作时间
周一到周五 9:00-11:30 13:30-19:30
热线电话
19168984579
论坛客服
QQ:
2064607811
微信:
19168984579
商城客服
QQ:
1911822682
微信:
18924675756
一牛网
›
芯片词条
›
嵌入式
嵌入式
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑
机械防抖摄像头
18-30倍可变焦模组
5G相关方案定制
T31/T40方案定制
全志方案定制
展讯4G/5G方案定制
FPGA高清视频方案
高通方案
显示屏方案
AMLOGIC相关方案
Ai硬件方案
PD超级快充方案
MTK4G/5G方案
wifi/cpe相关方案
RK相关方案
摄像头和测温模块
高精度定位模组
联咏相关方案
其他需求定制联系我
全部
帖子
资料
日志
“嵌入式”
的帖子
主题
版块
作者
回复/查看
最后发表
米尔电子STM32MP135开放式高实时高性能PLC控制器解决方案发布
arm开发
myyangyang
2024-3-7
2
128
cxqrbspr
2024-3-8 22:41
基于芯驰D9车规级芯片的三屏异显方案:国产化正当时
arm开发
myyangyang
2024-3-1
0
59
myyangyang
2024-3-1 14:27
NXP单片机 LPC804M101JHI33 ARM微控制器 - MCU 闪存 32-HVQFN
51单片机
mjdic
2024-2-28
0
64
mjdic
2024-2-28 11:03
米尔全志T527的国产核心板批量上市了!配套开发板
其他
myyangyang
2024-2-23
0
121
myyangyang
2024-2-23 17:31
STM32MP135开发板助力电力行业,IEC61850协议移植笔记
arm开发
myyangyang
2024-2-2
3
553
cheng03
2024-2-22 09:01
全国产六核CPU,打造高性能高安全显控方案
arm开发
myyangyang
2024-1-19
0
523
myyangyang
2024-1-19 19:37
Cheap_flash_fs(高端版)--嵌入式FAT16/32文件系统免费源码下载
arm开发
mp3
2024-1-15
1
260
yangdid01
2024-1-16 15:47
多串口助手 彩色日志 波形图像显示 嵌入式FLASH保存日志
单片机C语言
Cc812487000
2024-1-13
0
383
Cc812487000
2024-1-13 11:29
多串口彩色波形显示日志助手 云控日志CloudLog.exe
意法半导体STM
Cc812487000
2023-9-8
0
317
Cc812487000
2023-9-8 11:15
STM32MP135开发板5折,米尔邀您参与2023 STM32全国巡展
其他
myyangyang
2023-9-8
0
462
myyangyang
2023-9-8 16:39
如何选择米尔基于STM32MP1系列核心板和开发板
arm开发
myyangyang
2023-9-28
0
403
myyangyang
2023-9-28 16:18
ARM9嵌入式VxWorks 实践教程
VxWorks论坛
在梦里编程
2023-9-28
4
9757
蚂蚱
2024-2-4 14:13
树莓派 Raspberry Pi 5 正式发布!
树莓派
树莓派开发者
2023-9-28
2
330
树莓派开发者
2023-12-22 13:19
招视频嵌入式工程师
海思平台
ljh80451
2023-9-21
0
556
ljh80451
2023-9-21 14:13
上新!100%国产物料认证,米尔入门级国产核心板全志T113-i...
其他
myyangyang
2023-9-21
0
431
myyangyang
2023-9-21 20:07
微控制器和嵌入式系统中的并发和中断
其他
8496512
2023-9-18
0
310
8496512
2023-9-18 14:52
(出售,收购)高性能FPGA EP4SE230F29C4G 嵌入式可编程逻辑 IC
FPGA
mjdic
2023-9-14
0
319
mjdic
2023-9-14 14:20
工业树莓派 dhcpcd 使用介绍
树莓派
树莓派开发者
2023-9-14
0
286
树莓派开发者
2023-9-14 17:36
芯驰D9六核国产CPU,自主可控安全可信的高性能显控方案
其他
myyangyang
2023-9-1
0
569
myyangyang
2023-9-1 11:16
逻辑IC LCMXO3LF-2100E-5MG121I_LCMXO3LF-2100E-6MG121C 现场可编程门阵列
FPGA
mjdic
2023-8-9
0
343
mjdic
2023-8-9 13:17
查看更多
“嵌入式”
的资料
1.png
大小:133.17 KB
更新日期:2024-03-07 19:34:14
免费
下载
2.png
大小:85.93 KB
更新日期:2024-03-07 19:34:14
免费
下载
3.png
大小:171.05 KB
更新日期:2024-03-07 19:34:15
免费
下载
4.png
大小:253.68 KB
更新日期:2024-03-07 19:34:15
免费
下载
5.png
大小:438.81 KB
更新日期:2024-03-07 19:34:15
免费
下载
查看更多
“嵌入式”
的日志
ST官方基于米尔STM32MP135开发板培训课程(一)
myyangyang
2023-7-27 18:04
本文将以Myirtech的MYD-YF13X以及STM32MP135F-DK为例,讲解如何使用STM32CubeMX结合Developer package实现最小系统启动。 1.开发准备 1.1 Developerpackage准备 a.Developer package下载: https://www.st.com/en/embedded-software/stm32mp1dev.html b.解压后进入source目录: c.源码准备(可以根据每一个source目录下的README.HOW_TO.txt中第三点准备): TFA源码 $ cd tf-a-stm32mp-v2.6-stm32mp-r2-r0 $ tar xf tf-a-stm32mp-v2.6-stm32mp-r2-r0.tar.xz $ cd tf-a-stm32mp-v2.6-stm32mp-r2 $ for p in `ls -1 ../*.patch`; do patch -p1 $p; done OP-TEE源码 $ cd optee-os-stm32mp-3.16.0-stm32mp-r2-r0 $ tar xf optee-os-stm32mp-3.16.0-stm32mp-r2-r0.tar.xz $ cd optee-os-stm32mp-3.16.0-stm32mp-r2 $ tar xf ../fonts.tar.gz $ for p in `ls -1 ../*.patch`; do patch -p1 $p; done U-Boot源码 $ cd u-boot-stm32mp-v2021.10-stm32mp-r2-r0 $ tar xf u-boot-stm32mp-v2021.10-stm32mp-r2-r0.tar.xz $ cd u-boot-stm32mp-v2021.10-stm32mp-r2 $ for p in `ls -1 ../*.patch`; do patch -p1 $p; done Kernel源码 $ cd linux-stm32mp-5.15.67-stm32mp-r2-r0 $ tar xf linux-5.15.67.tar.xz $ cd linux-5.15.67 $ for p in `ls -1 ../*.patch`; do patch -p1 $p; done 1.2 SDK安装 请阅读WIKI完成 Install_the_SDK。 1.3 STM32CubeProgrammer安装 请根据WIKI给出的命令/步骤安装 CubeProgrammer and libusb installation。 2.原理框图 首先看一下Myirtech的原理图框架: 从原理框图中可以得出以下硬件配置信息: 1.STM32MP135DAF7 2.DDR3L 3.分离式电源设计 4.支持QSPI NAND,SD卡启动 5.双千兆以太网口 6.USB Host 7.USB OTG (烧录用) 8.UART4 debug串口 9.外部时钟源,HSE(24MHz),LSE(32.768KHz) 3. STM32CubeMX项目创建 打开STM32CubeMX, 根据芯片的part number选择正确的芯片封装开始项目创建,例如:Myirtech使用的是STM32MP135DAF7, 点击“Generate Code”之后会生成一个近乎空的project,设备树结构: Note : STM32CubeMX的规则是先生成Kernel的dts, 然后将生成的dts文件拷贝到u-boot目录下,也就是说u-boot的设备树stm32mp135d-myir_bring_up-mx.dts是从kernel目录拷贝过来的,所以在U-Boot阶段修改设备树,添加User code时,请同步修改kernel的设备树或者将修改好的设备树拷贝到Kernel目录,防止下次使用CubeMX生成设备树的时候,u-boot部分的修改被kernel未修改的设备树覆盖。 创建设备树软链接: TFA: PC$cd PC$ln-s/local/home/xxx/Desktop/STM32CubeMX/myir_bring_up/DeviceTree/myir_bring_up/tf-a/*fdts/ OP-TEE: PC$cd PC$ln-s/local/home/xxx/Desktop/STM32CubeMX/myir_bring_up/DeviceTree/myir_bring_up/optee-os/*core/arch/arm/dts/ U-Boot: PC$cd PC$ln-s/local/home/xxx/Desktop/STM32CubeMX/myir_bring_up/DeviceTree/myir_bring_up/u-boot/*arch/arm/dts/ 培训资料未完,请关注下一期文章。
展开>>
收起<<
3 次阅读
|
0
个评论
高考答题卡怎么被机器识别?基于OpenCV答题卡识别模拟-米尔ARM+FPGA异构开发板 ...
myyangyang
2023-6-9 18:59
本篇测评由优秀测评者“筑梦者与梦同行”提供。 01 . 前言MYD-JX8MMA7SDK发布说明 根据下图文件内容可以知道myir-image-full系统支持的功能,其支持OpenCV,也就不用在格外安装相关驱动包等,省了很多事情。 02 . MYD-JX8MMA7软件评估指南 本文介绍了Python的基本操作,在文档中10.1开发语言支持。 03 . 历程路径 /usr/share/OpenCV/samples/ /usr/share/opencv4/samples/python/ 文件目录中有一些python程序。 04 . 图像识别开发 1.使用参考图片 上面的图片是模拟的答题卡,与实际答题卡理论相同,具体细节可能需要变动。正常的答题卡采集的数据较多。 2.源代码 1)源代码截图 2)源代码粘贴 #!/usr/bin/envpython3 """ CreatedonThuSep3007:53:412021 """ Python 2/3 compatibility fromfutureimportprint_function importnumpyasnp importcv2 img=cv2.imread('b.jpg') cv2.imshow("orginal",img) gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imshow("gray",gray) gaussian=cv2.GaussianBlur(gray,(5,5),0) cv2.imshow("gaussian",gaussian) edged=cv2.Canny(gaussian,50,200) cv2.imshow("edged",edged) cts,hierarchy=cv2.findContours(edged.copy(),cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img,cts,-1,(0,0,255),3) cv2.imshow("img",img) cv2.waitKey() cv2.destroyAllWindows() 3.代码图片上传 4.实际运行效果
展开>>
收起<<
1 次阅读
|
0
个评论
国产工业CPU平台,米尔基于全志T507-H开发板的实时性分析与测试 ... ... ...
myyangyang
2023-2-4 16:42
01 . 概述 全志科技T5系列是一个高性能四核 CortexTM–A53 处理器,适用于新一代汽车市场。T5系列符合汽车 AEC – Q100 测试要求。该芯片集成四核 CortexTM–A53 CPU、G31MP2 GPU、32 位 DDR3/LPDDR3/DDR4/LRDDR4 动态随机存储器。 MYC-YT507H核心板基于T507-H处理器研制,具有丰富的接口资源, 拥有良好的软件开发环境,内核支持开源操作系统 Linux。 在开发阶段,建议配合核心板配套的评估套件 MYD-YT507H 来加速开发。评估套件的详细信息请访问: http://www.myir-tech.com/product 02 . 实时内核设计 实时补丁我们选择RT-Preempt来实现。 2.1. 移植补丁 RT补丁官网 从RT官网下载4 .9.170对应补丁 https://wiki.linuxfoundation.org/realtime/start https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/older/ 把解压后的补丁放到linux4.9目录下,然后用下面命令打包即可 patch -p1 ./patch-4.9.170-rt129.patch 由于代码有差异,会提示大量不匹配,导致补丁打入失败则用下面命令找出打入失败文件 find ./-name "*.rej" 手动逐一检查rej文件,逐个修改 难点: zram驱动,sdk中源码引用自5.x版本驱动,需要找5.10 左右RT补丁参考 thread_info.h文件中手动将PREEMPT_LAZY宏改序号、宏名字 问题点1:中断上下文中调用抢占api(rt_spin_lock即mutex)导致sched异常。 分析与解决: 这个中断是系统核心timer服务,至关重要。其通过r equest_percpu_irq 注册中断isr,并不是常规r equest_irq 或r equest_thread_irq,无法线程化。 继续分析崩溃调用栈,在崩溃前最后的操作为c pufreq_cpu_get,通过分析其源码,基本找到__account_system_time函数中调用了cpufreq_acct_update_power ,其中又调用了r t_spin_lock函数导致崩溃。 通过分析cpufreq_acct_update_power函数,发现通过宏定义:CONFIG_CPU_FREQ_TIMES 可以屏蔽该函数,进而不调用r t_spin_lock。 经测试,在menuconfig中,屏蔽 CONFIG_CPU_FREQ_TIMES 后,系统能正常启动到login环节。 解决方法 : drivers/cpufreq/Kconfig中针对CPU_FREQ_TIMES设置与PREEMPT_RT_BASE的互斥。 config CPU_FREQ_TIMES bool "CPUfrequencytime-in-statestatistics" #defaulty dependson ! PREEMPT_RT_BASE help ThisdriverexportsCPUtime-in-stateinformationthroughprocfsfile system. !It'sincompatablewithRT-Preemptscheduler. Ifindoubt,sayN. 打开RT实时测试工具,进行测试 在buildroot下面打开相关测试,根据下面描述打开rt-tests工具即可,打开测试工具测试步骤 2.2. 其他影响性能的配置 禁用CPU Freq自动调频,并设置主频为最高频率: cd/sys/devices/system/cpu/cpufreq/policy0 echouserspacescaling_governor cat saling_max_freq scaling_setspeed (如不禁用cpufreq调频功能,系统会因动态调频产生极大的偶然延迟) 03 . 实时性测试 空载测试 cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m -a -n 图3-1.空载测试 CPU内存满载 cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m -a -n 增加压力 stress -ng--cpu4--cpu-method all --io4--vm50-d5--fork4--timeout36000s 图3-2.满载测试 数据对比: 板卡 MYD-YT507H 测试时间 120min 指令 cyclictest stress-ng 空载 平均 8 us 最大 2 4 us 满载 平均 13 us 最大 136 us 表3-1.数据信息 04 . 产品介绍 MYC-YT507H核心板采用SMD封装形式贴片(邮票孔+背面焊盘)。标准配置有4种产品型号。它们在存储配置、温度等方面有一些差异,客户可根据需求自行选择合适的型号。 图2-1 MYC-YT507H核心板 4.1.MYC-YT507H主要参数 名称 主要参数 主控芯片系列 T5 Series 主控芯片型号 T507-H 处理器规格 4核 ARM CortexTM-A53 内存 LPDDR4 1GB/2GB 存储器 EMMC 8GB (其他容量可选) 核心板尺寸 43 x 45 x 3.5 mm(带屏蔽骨架) 接口类型 SMD贴片,邮票孔+LGA PCB板规格 10层板设计,沉金工艺 操作系统 Linux 4.9 表4-1 核心板主要参数 4.2.MYD-YT507H外设接口资源主要参数 功能 参数 系统 POWER 12V DC JACK KEY 1路复位按键 1路F EL 刷机按键 1路ON/OFF按键 SWITCH 1路电源开关 BOOT SET 1路拨码开关 SD 1 路 Micro SD 卡槽 通讯接口 WIFI/BT 1路WIFI/BT模块接口,通过20 PIN 排针引出 4G 1路4G Mini PCIE接口 1路SIM卡座 Ethernet 1路10/100/1000M以太网接口,RJ45接口 1路10/100M以太网接口,RJ45接口 USB 2路 USB 2.0 HOST 接口,采用Type-A接口 1路 USB 2.0 OTG 接口,采用 Type-C接口 UART 1路调试串口,通过串口转USB,采用Type-C接口 2路普通串口,通过扩展接口引出 多媒体接口 DISPLAY 1路HDMI 2. 0 a接口 2路LVDS 显示接口(支持单/双通道) 1路TV CVBS模拟视频输出接口 CAMERA 1路MIPI CSI摄像头接口 1路DVP摄像头接口 AUDIO 1路3.5mm音频输出接口 1路SPDIF音频输出接口 1路扬声器扩展接口 扩展接口 Expansion IO 1 路 2.54mm间距的40 PIN 排针, GPIO/TWI/UART 表4 -2 开发板外设接口资源主要参数 米尔电子,专注嵌入式处理器模块设计和研发,是领先的嵌入式处理器模组厂商。米尔电子在嵌入式领域具有 20年的行业技术经验,为客户提供专业的ARM工业控制板、ARM开发板、ARM核心板、ARM开发工具、充电桩计费控制单元及充电控制板等产品和技术服务。此外,米尔电子还可通过涵盖众多ARM处理器及操作系统的专业技术提供定制设计解决方案,通过专业且高效率服务帮助客户加速产品上市进程。
展开>>
收起<<
7 次阅读
|
0
个评论
方案丨米尔MYC-Y6ULX-V2核心板在运动控制系统的应用
热度
1
myyangyang
2022-9-27 14:11
工业自动化是在工业生产中采用自动控制、自动调整等生产装置来代替人工生产、人工操作机器加工生产的行业趋势。自动化作为降低生产风险、降低生产成本、提高生产效率等的现代化手段之一,在工业生产中逐步替代了低效率、产品质量不可控、生产高损耗的人工生产。但随着自动化程度的不断从半自动走向全自动,对自动化的 “大脑”——控制系统要求也越来越高,不仅需要具备方便易学的操作系统,还要实现生产过程中的独立运行、自适应控制等。 示教器应用在控制系统中,图片来自网络 机械运动控制系统投入到 实际运用的过程中,自动化生产的控制系统会随着需求的提出而不断优化改进,同时也促进了控制系统硬件以及软件的进步发展。首先是控制系统对多轴运动的精密控制,这需要大量的实时数据分析和计算来保证操作高精准、高响应的稳定可靠,那么主频的 CPU就需要有足够强劲的性能和处理能力,运存空间也要充分满足计算需要;其次,控制系统可脱离PC主机的额外配置,一体机化的控制系统使用更方便,也更节省空间,独立运行;并且,控制系统的工业级屏幕显示以及中文操作系统降低了学习和操作的难度,易学易用,使用更方便。 基于 MYC-Y6ULX-V2核心板实现的 示教器的应用 , 用于操作运动控制系统, 设计上采用高清显示屏,实现更好的进行人机交互,灵活操控系统;利用模拟量信号、 USB、IO接口等,精准采集,高效传输,实现该系统在实际操作应用中的极高精度和稳定性。 产品功能应用 自动铣床:大批量定制部件铣加工;加工部件自动铣加工等; 自动抛光、打磨机:钻石珠宝、玻璃产品的打磨、抛光等; 各种自动切割机械: PCB板切割、石材切割、多轴切割、玻璃切割等; 全自动点 /涂胶机、自动喷涂机:电子元件封装、二极管点胶/封注,晶片封装等; 全自动注塑机:出料流量控制、产品自动脱模等; 米尔电子(全称:深圳市米尔电子有限公司)针对客户所提出的需求,提供了基于 MYC-Y6ULX-V2核心板的示教器投产应用的解决方案。MYC-Y6ULX-V2核心板采用NXP高效能的i.MX6ULX系列CPU,硬件设计专业可靠,电路稳定;同时搭载一个运行频率高达900MHz的ARM Cortex-A7内核;运存空间充足,标配512M DDR3 和4GB EMMC flash(可选其他容量组合),满足机械控制过程中高分辨率、高响应、高可靠性的高速运算要求,并行的LCD显示又易于操作。此外,米尔MYC-Y6ULX-V2核心板的丰富接口,可以提供2路CAN总线、8路串口、8路ADC、4路I2C等接口,自由开发性强,可根据客户的需求痛点进行方案设计,赋能三轴运动控制系统功能自动化、智能化应用。 米尔的 MYC-Y6ULX-V2核心板尺寸仅有37mm*39mm,电路设计高度集成,140PIN的引脚接口包含了丰富的外设资源,方便客户进行灵活的开发应用;并采用高密度邮票孔封装,不仅焊接稳固不易松动,还节省了连接器的成本。同时该核心板可支持Linux4.1.15版本的内核驱动,米尔还提供丰富可靠的代码库。MYC-Y6ULX-V2核心板经过一系列的软硬件测试:其中包括老化测试、关键信号质量测试、高低温测试、软件压力测试等,确保 产品性能稳定,可在严苛的工业环境下正常工作。 附: MYC-Y6ULX-V2核心板产品功能 Ø 2路百兆以太网:支持SSH, TCP/IP,支持IEEE 1588协议可以使用网线连接,实现稳定的网络通信功能; Ø 串口:提供 8路串口,可以连接单片机,蓝牙芯片等器件,还可以通过芯片可以扩展为RS232或RS485进行远距离传输; Ø I2C:可扩展4路I2C总线,最高速率达400 kbps,I2C 使用两条线在主控制器和从机之间进行数据通信,可以连接电容触摸屏,声卡芯片,摄像头模块; Ø CAN:可扩展2路CAN总线,支持CAN协议规范2.0 B版; Ø SPI:可扩展4路SPI, 数据速率高达52 Mbit/s。它可配置支持主/从模式, 一条总线可以连接多个从设备; Ø ADC: 提供8路ADC, 12位通用模数转换器, 传感器内部使用 ADC来处理原始的模拟信号,最终给用户输出数字信号; Ø PWM:模块提供8路PWM, 脉宽调制器可以用来显示屏亮度调节和电机调速; Ø I2S:模块提供3路I2S, 可以连接声卡芯片实现声音的输入输出; Ø GPIO: 提供多达97路GPIO, 可供客户自由使用; 米尔电子同样开发了配套的 MYD-Y6ULX-V2开发平台: 这里也要小小预告一下,米尔 MYD-Y6ULX-V2开发板即将再次开放免费试用申请通道,欢迎大家踊跃申请~
展开>>
收起<<
24 次阅读
|
1
个评论
如何使用低压差稳压器提高降压转换器的轻载效率
热度
1
xy123456
2019-7-13 15:07
设计一个仅在空载时消耗微安电流的DC/DC转换器可以比作为更轻盈的液体加油的肌肉车 - 你可以让它工作,但这并不容易。在大多数现代DC/DC转换器中,满载电流的高效率是常见的;然而,当负载被禁用或断开时实现高效率仍然是一项困难和/或昂贵的任务。 许多汽车和工业应用需要从主电源到电源的高效12 V或24 V降压功率转换。满载时的负载点(POL)电压,但在器件处于空闲或关闭状态时也需要非常低的电流消耗。为了实现如此低的电流,您可以轻松地使用低压差稳压器(LDO)与降压转换器并联,以在系统进入轻载/空载状态时实现电池的最小电流消耗。 最终,延长系统电池寿命的理想情况是禁用输入电源中的所有可能设备。但是,在某些情况下,系统内的某些组件仍然需要一个子调节电压,以便在关机状态期间与其他系统模块通信(即汽车应用中的CAN总线收发器)。不专门设计用于轻载效率的DC/DC转换器可以在无负载的情况下消耗几毫安。此外,具有高轻载效率的转换器将采用频率折返方案和非连续模式操作,从而导致噪声输出电压和过多的EMI辐射。 LDO非常适合轻负载情况,因为它们可以设计为在保持低噪声输出电压的同时消耗非常低的电流。进入输入的空载电流(也称为“接地电流”)可以是几微安或更低的量级。因此,将转换器和LDO的性能结合起来,具有明显的优势。 如果设计人员能够在负载为负载时禁用DC/DC转换器,则可以采用并行使用这两种方法的简单方法。最小,即对用于负载的转换器使用相同的启用/禁用信号。图1中可以看到一个例子。 与LDO并联的DC/DC转换器的框图(由德州仪器提供)图2给出了低IQ LDO效率曲线的一般示例,该效率曲线用DC/DC转换器的效率曲线绘制,用于更高的电压转换(即12 V至1 V)。在轻负载时,LDO更有效。如果系统在轻负载下花费大量时间,使用LDO来调节电压可以显着提高系统总效率。 低IQ效率曲线的一般示例(由德州仪器提供)。 实现图1中的电路要求将转换器输出设置为高于最大LDO输出电压的电压。在正常操作中,当转换器使能时,转换器将调节输出电压并向负载提供电流。大多数LDO无法吸收电流,依靠来自通过器件的负载电流来调节输出。将LDO的输出电压拉高到其标称电压以上将迫使LDO进入未调节状态,此时电流不会从输入流出输出,DC/DC转换器将有效地运行,就像LDO没有连接一样。 一旦DC/DC转换器被禁用,它将停止开关,输出电压将降低,直到LDO开始规范产出。再次使能时,DC/DC转换器将以预偏置状态启动(启动期间输出上存在的正电压称为“预偏置”)。转换器将开始其启动过程,而不会从电路中吸收任何电流。输出节点,最终将输出电压拉高到标称LDO电压以上,并重新控制输出。 考虑使用1400 mAh电池计算简单的电池保存期限示例。假设电池完全充电后设备处于待机状态,并且连接的电源是无负载时静态电流为10μA的LDO或无负载时静态电流为200μA的DC/DC转换器。 电池容量 使用DC/DC转换器的电池保质期(完全初始充电)使用LDO的电池保质期(完全初始充电) 1400 mAh 1400/0.2 = 7000小时 7000/24 = 291.7天 1400/0.01 = 140000小时 140000/24 = 5833.3天 电池寿命可延长20倍。 现在讨论将转向如何使用TI器件实现该电路。 中的电路显示了LDO与DC/DC并联的效率提升示例转换器。 TPS709与TPS54331并联(由德州仪器公司提供)。 选择的LDO是TPS709 ,具有30 V输入范围,标称接地电流仅为1μA。 DC/DC转换器是TPS54331,根据其输入电压范围和高效率进行选择。与大多数类似的DC/DC转换器相比,TPS54331在轻负载时已经表现出高效率。然而,在110μA(典型值)非开关静态电流时,转换器的空载电流几乎是TPS709在空载(1.3μA)时的接地电流的100倍,即使在开关损耗和反馈电阻负载之前也是如此图4显示了TPS709和TPS54331之间的效率测量差异。图4显示了TPS709和TPS54331之间的效率测量差异。当TPS54331使能时,测量配置为VIN = 12 V,VOUT = 3.46 V,当TPS54331禁用时,VOUT = 3.3 V. 实现电路的效率,启用和禁用TPS54331(由德州仪器公司提供)。 尽可能请注意,从10μA负载电流到10 mA,TPS709的效率将保持大致恒定在27%(VOUT/VIN)。当TPS54331使能时,由于空载输入电流,它将以非常低的效率启动,但很快就会升高,在较高的负载电流下达到90%以上。当TPS54331使能时,TPS709不提供任何负载电流,因此可以忽略其接地电流。由此可以清楚地看出,当输出负载电流为350μA或更低时禁用TPS54331将是有益的。 如果负载电路在启用时具有高电流压摆率,则可能需要将使能电路延迟到负载,以便在负载需要来自VOUT的电流之前,DC/DC转换器有足够的时间被启用。这可以通过RC延迟轻松完成,但是,应注意在DC/DC关闭后负载不会保持开启状态。与电阻器并联的二极管可以实现这一点。图5显示了该电路的一个示例。 如何使用低压差稳压器提高降压转换器的轻载效率图5:TPS709与TPS54331并联,具有负载使能延迟(由德州仪器公司提供)。 图6显示了系统的系统响应时间范围镜头,以及启用信号使电路进入1 A负载。 如何使用低压差稳压器提高降压转换器的轻载效率图6:启动和启用/禁用图3中的电路。
展开>>
收起<<
706 次阅读
|
1
个评论
A3P030-VQG100的相关技术资料描述
热度
1
shuxia6699
2019-5-5 21:43
A3P030-VQG100描述:闪光的ProASIC3系列FPGA具有可选的软ARM支持; 时间模型 A3P030-VQG100特性和好处 高容量 盖茨15k1M系统 144来提供真正的双端口SRAM 300用户的I/o 可重复编程的Flash技术130nm,七层金属铜(6),基于flash的CMOS过程即时0级支持单片机 解决方案保留程序设计时关闭。 A3P030-VQG100高性能 350MHz系统性能 3.3V,66MHz64位PCI__ 在系统编程(ISP)和安全 ISP使用片上128位高级加密标准 (AES)解密(除了手臂启用ProASIC3设备) 通过JTAG(IEEE1532-兼容) FlashLock,以确保FPGA的内容 低功率 核心电压为低功率 支持1.5V-Only系统 低阻抗的闪光灯开关 高性能路由层次结构 分段、分层路由和时钟结构 先进的I/O 700MbpsDDRLVDS-CapableI/Os(A3P250及以上) 1.5V,1.8V,2.5V和3.3V混合电压操作 广泛每JESD8-B供电电压支持, 允许I/o操作从2.7V至3.6V Bank-SelectableI/O电压4银行每个芯片 单端I/O标准:LVTTLLVCMOS3.3V/ 2.5V/1.8V/1.5V,3.3VPCI/3.3VPCI-X__和LVCMOS 2.5V/5.0V的输入 微分I/O标准:LVPECLLVDSB-LVDS, M-LVDS(A3P250及以上) I/O寄存器在输入、输出,使路径 支持热插拔和冷爱惜I/Os 可编程输出转换速率__和驱动力量 弱上拉/市场 IEEE1149.1JTAG边界扫描测试 Pin-Compatible包在ProASIC3家庭 时钟调节电路(CCC)和锁相环 6CCC块,有一个集成锁相环 可配置相移、乘/除,延迟功能 和外部反馈 输入频率范围宽(1.5兆赫到350兆赫) 嵌入式内存__ 1kbitFlashROM用户非易失存储器sram和fifoVariable-Aspect-Ratio4608位内存块(×1×2×4×9×18组织)真正的双端口SRAM(×18除外)ARM处理器ProASIC3fpga的支持M1ProASIC3业务皮层M1软处理器有或没有调试。 A3P030-VQG100注: 1.A3P015不建议新设计。 2.参考Cortex-M1产品短暂的更多信息。 3.AES不是可供Cortex-M1ProASIC3设备。 4.六个芯片(主要)和三个象限全球网络可供A3P060以上。 5.M1A3P250设备不支持这个包。 6.更高的密度和附加功能的支持,请参阅ProASIC3EFlash家庭fpga数据表
展开>>
收起<<
个人分类:
资料
|
855 次阅读
|
2
个评论
DO-41轮廓尺寸展示如下
热度
1
shuxia6699
2019-4-27 22:27
描述:1瓦的玻璃密闭硅稳压二极管; 1N4747A特征 高可靠性 急剧扭转特性 低反向电流水平 VZ-tolerance±5% DO-41轮廓尺寸 1N4747A(http://www.dzsc.com/ic-detail/9_5623.html)机械数据: 电压稳定 例:DO-41玻璃柜 重量:约0.33克 1N4747A基于DC-measurement在热平衡,同时保持领先温度30℃(TL), 9.5毫米(3/8”)从二极管的身体
展开>>
收起<<
个人分类:
资料
|
897 次阅读
|
1
个评论
关于S1M-E3/61T典型的应用介绍
热度
1
shuxia6699
2019-4-26 16:27
描述:表面安装玻璃钝化整流; 用于通用整流电源,为消费者,逆变器,转换器和随心所欲的二极管汽车和电信。 机械数据 案例:-214ac(SMA) 模塑料符合UL94V-0可燃性等级 基地P/N-E3——通过无铅认证、商业级 基地P/NHE3——通过无铅认证,AEC-Q101合格 基地P/NHE3_X——通过无铅认证和AEC-Q101合格 (“值”表示修订代码。,B,.....) S1M-E3/61T终端:亚光镀锡,焊/ j-std-002和JESD22-B102 E3后缀满足JESD201类一线测试,魁梧后缀 满足JESD201年二班须测试 极性:颜色带表示阴极 S1M-E3/61T典型的应用 S1M-E3/61T(http://www.dzsc.com/ic-detail/9_4465.html)特性 低调包 适合自动放置 玻璃钝化的芯片结 低正向电压降 低泄漏电流 高过载能力 满足实验室级别1,每j-std-020,低频最大的峰值 260°C AEC-Q101合格 材料分类:合规的定义 包轮廓尺寸以英寸(毫米)1
展开>>
收起<<
个人分类:
资料
|
823 次阅读
|
1
个评论
AP4313KTR-G1的应用程序介绍
热度
1
shuxia6699
2019-3-28 17:10
AP4313是一个高度集成的解决方案的一个常数电压/恒流模式smp的应用程序。 AP4313包含一个1.21 v电压参考±1%的精度,电流传感电路和两个运算放大器。结合参考电压一个运算放大器使AP4313一个理想电压控制器使用适配器和电池充电器。 另一个低电压参考的总和与其他运算放大器的理想限流器输出低侧电流传感。 在SOT-23-6 AP4313可用包。 AP4313KTR-G1特性 恒压和恒流控制 精密内部参考电压 一些外部组件 容易补偿 低电源电流:0.5 操作温度范围:-40 - 105C AP4313KTR-G1应用程序 适配器 电池充电器 AP4313KTR-G1(http://www.dzsc.com/ic-detail/9_2384.html)销的配置 注1:压力大于那些列在“绝对最大额定值”可能会造成永久性损坏设备。 这些都是压力等级,功能的设备操作这些或任何其他条件之外 “推荐的操作条件下“不是暗示。长时间暴露于“绝对最大额定参数”可能影响设备可靠性
展开>>
收起<<
个人分类:
资料
|
1017 次阅读
|
1
个评论
匠牛社区TI AM5728 LED测试经验
jiangniu
2018-2-2 10:54
本测试是在匠牛社区的AM5728 开发板 JN-mini5728上进行的,是区别于采用GPIO方式对LED进行测试的另一种测试方法。 比如对AM5728 位置D3 蓝色LED测试: 在板卡终端输入以下命令: root@am57xx-evm:~#echo 59 /sys/class/gpio/export root@am57xx-evm:~#echo"out" /sys/class/gpio/gpio59/direc ti on 打开或关闭LED灯 root@am57xx-evm:~#echo0 /sys/class/gpio/gpio59/value root@am57xx-evm:~#echo1 /sys/class/gpio/gpio59/value 在上一个版本中我们发现对LED测试太繁琐(GPIO方式),所以对LED测试进行升级,使测试变得更加简洁。 匠牛社区AM5728开发板JN-mini5728有2组LED:D3和D4,每组LED都有蓝,绿,红三种颜色。 LED位置如下图1所示: 图1 位置 显示颜色 操作接口 D3 蓝色 /sys/class/leds/status_usr0/brightness 绿色 /sys/class/leds/status_usr1/brightness 红色 /sys/class/leds/status_usr2/brightness D4 蓝色 /sys/class/leds/status_usr3/brightness 绿色 /sys/class/leds/status_usr4/brightness 红色 /sys/class/leds/status_usr5/brightness 1点亮LED root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr0/brightness root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr1/brightness root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr2/brightness root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr3/brightness root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr4/brightness root@am57xx-evm:~#echo 1 /sys/class/leds/status_usr5/brightness 2关闭LED root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr0/brightness root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr1/brightness root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr2/brightness root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr3/brightness root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr4/brightness root@am57xx-evm:~#echo 0 /sys/class/leds/status_usr5/brightness 注意: JN-mini5728启动成功后,会显示绿色LED。 如果大家感兴趣的话可以登录 匠牛社区 官网获取更多 开发资料 、 视频教程 和 技术支持 ,欢迎大家一起参与有关AM5728开发的技术交流与讨论哦!
展开>>
收起<<
个人分类:
经验分享
|
996 次阅读
|
0
个评论
TI AM5728 开发板 USB接口测试
jiangniu
2018-1-30 11:25
本测试是基于AM5728开发板JN-mini5728进行的。 AM5728开发板JN-mini5728 的USB为叠层接口,上边为USB2.0接口,下边为USB3.0接口。 下面我们开始进行USB接口测试: 1 USB热插拔测试 将2.0 U盘连接到USB2.0接口,热插拔信息如下图1所示: 图1 将3.0 U盘连接到USB3.0接口,热插拔信息如下图2所示: 图2 从图1可知USB 3-1成功挂载了一个3.91 GB的2.0 U盘,挂载名是sda,该U盘只有一个分区sda4 从图2可知USB 2-1成功挂载了一个15.5 GB的3.0 U盘,挂载名是sdb,该U盘只有一个分区sdb1 注意:U盘挂载名请以实际操作为准,U盘插拔顺序不同,挂载名称也会不同。 2 查看U盘挂载信息 root@am57xx-evm:~# df 图3 从图3可知: 2.0 U盘挂载目录是/run/media/sda4 3.0 U盘挂载目录是/run/media/sdb1 3 拷贝数据 从JN-mini5728拷贝内核日志到2.0 U盘 从2.0 U盘拷贝数据到JN-mini5728家目录 root@am57xx-evm:~#cp -r /run/media/sda4/JiangNiu-demo /home/root 从3.0 U盘拷贝数据到JN-mini5728家目录 root@am57xx-evm:~#cp -r /run/media/sdb1/JiangNiu-demo /home/root 4 卸载测试 root@am57xx-evm:~#umount /run/media/sda4 root@am57xx-evm:~#umount /run/media/sdb1
展开>>
收起<<
个人分类:
经验分享
|
1168 次阅读
|
0
个评论
匠牛社区 AM5728开发板 USB3.0工业相机开发
热度
1
jiangniu
2018-1-26 17:23
注:本案例是采用匠牛社区AM5728开发板JN-mini5728+JN-miniVB套件进行开发测试的。 一工业相机概述 工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成为有序的电信号。 选择合适的相机也是机器视觉系统设计中的重要环节,相机不仅决定图像分辨率、图像质量,同时也与整个系统的运行模式直接相关。 工业相机应具有高精度、高清晰度、色彩还原度、低噪声等特点,而且通过计算机可以编程控制曝光时间、亮度、增益等参数,另外图像窗口无级缩放,带有外触发输入,带有闪光灯控制输出等功能。 工业相机由两大基本部件组成:图像感光芯片和数字化的数据接口。图像感光芯片由数十万至数百万个像素组成。像素把光线的强度转换为电压输出。这些像素的电压被以灰度值的形式输出,所有像素放在一起就形成了图像,发送给计算机。数据接口主要有USB2.0、USB3.0、1394和千兆以太网。一般工业相机都提供640x480像素的分辨率和30fps的帧速率。 二实例详解 编译工业相机实例程序,在UbuntuPC运行如下命令: cdSDK/JiangNiu-demo/FlyCapOpenCV make 2.1视频采集实例 实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapVideo.cpp 2.1.1实例运行步骤 1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVBUSB3.0接口。 2JN-miniVB运行如下命令,启动FlyCapVideo实例 root@am57xx-evm:~#cd/opt/JiangNiu-demo/FlyCapOpenCV/ root@am57xx-evm:~#./FlyCapVideo 2.1.2实例结果 HDMI显示界面如下图2-1-1所示: 图2-1-1 2.1.3实例分析 FlyCapVideo程序是从工业相机获取采集数据,转到OpenCV环境下处理图像,并获取该图像长、宽、图像数据等参数,将图像转换为OpenCVMat类型。 详细过程如下图2-1-2所示: 图2-1-2 2.2sobel边缘检测实例 实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapSobel.cpp 2.2.1实例运行步骤 1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVBUSB3.0接口。 2JN-miniVB运行如下命令,启动FlyCapSobel实例 root@am57xx-evm:~#cd/opt/JiangNiu-demo/FlyCapOpenCV/ root@am57xx-evm:~#./FlyCapSobel 2.2.2实例结果 HDMI显示界面如下图2-2-1所示: 图2-2-1 2.2.3实例分析 FlyCapSobel程序是对工业相机采集视频进行Sobel算法处理,分别处理图像的X方向和Y方向,然后将两个方向的处理结果加权求和。 2.3霍夫线检测实例 实例源码位于SDK/JiangNiu-demo/FlyCapOpenCV/FlyCapHoughlines.cpp 2.3.1实例运行步骤 1参考板卡开机登录章节,启动JN-miniVB,然后将USB工业相机连接到JN-miniVBUSB3.0接口。 2JN-miniVB运行如下命令,启动FlyCapHoughlines实例 root@am57xx-evm:~#cd/opt/JiangNiu-demo/FlyCapOpenCV/ root@am57xx-evm:~#./FlyCapHoughlines 2.3.2实例结果 HDMI显示界面如下图2-3-1所示: 图2-3-1 2.3.3实例分析 FlyCapHoughlines程序是从工业相机获取数据,转化为OpenCV下Mat类型对象。使用Canny算法检测图像边缘。将边缘图像进行霍夫线检测。
展开>>
收起<<
963 次阅读
|
2
个评论
【转】C语言测试,你懂几点?
热度
3
缎锦小妹
2016-7-15 16:57
(经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题 C语言测试是招聘 嵌入式系统 程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不是技术技巧而设计吗?这个愚蠢的问题吗?如要你答出某个字符的ASCII值。这些问题着重考察你的系统调用和内存分配策略方面的能力吗?这标志着出题者也许花时间在微机上而不上在嵌入式系统上。如果上述任何问题的答案是“是”的话,那么我知道我得认真考虑我是否应该去做这份工作。 从面试者的角度来讲,一个测试也许能从多方面揭示应试者的素质:最基本的,你能了解应试者C语言的水平。不管怎么样,看一下这人如何回答他不会的问题也是满有趣。应试者是以好的直觉做出明智的选择,还是只是瞎蒙呢?当应试者在某个问题上卡住时是找借口呢,还是表现出对问题的真正的好奇心,把这看成学习的机会呢?我发现这些信息与他们的测试成绩一样有用。 有了这些想法,我决定出一些真正针对嵌入式系统的考题,希望这些令人头痛的考题能给正在找工作的人一点帮住。这些问题都是我这些年实际碰到的。其中有些题很难,但它们应该都能给你一点启迪。 这个测试适于不同水平的应试者,大多数初级水平的应试者的成绩会很差,经验丰富的程序员应该有很好的成绩。为了让你能自己决定某些问题的偏好,每个问题没有分配分数,如果选择这些考题为你所用,请自行按你的意思分配分数。 预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: ?; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) ?; 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 ?; 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 ?; 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 2 . 写一个“标准”宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) = (B) ? (A) : (B)) 这个测试是为下面的目的而设的: ?; 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 ?; 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 ?; 懂得在宏中小心地把参数用括号括起来 ?; 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事? least = MIN(*p++, b); 3. 预处理器标识#error的目的是什么? 如果你不知道答案,请看参考文献1。这问题对区分一个正常的伙计和一个书呆子是很有用的。只有书呆子才会读C语言课本的附录去找出象这种问题的答案。当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。 死循环(Infinite loops) 4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。我首选的方案是: while(1) { ?} 一些程序员更喜欢如下方案: for(;;) { ?} 这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案是:“我被教着这样做,但从没有想到过为什么。”这会给我留下一个坏印象。 第三个方案是用 goto Loop: ... goto Loop; 应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。 数据声明(Data declarations) 5. 用变量a给出下面的定义 a) 一个整型数(An integer) b)一个指向整型数的指针( A pointer to an integer) c)一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an intege)r d)一个有10个整型数的数组( An array of 10 integers) e) 一个有10个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers) f) 一个指向有10个整型数数组的指针( A pointer to an array of 10 integers) g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer) h)一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer ) 答案是: a) int a; // An integer b) int *a; // A pointer to an integer c) int **a; // A pointer to a pointer to an integer d) int a ; // An array of 10 integers e) int *a ; // An array of 10 pointers to integers f) int (*a) ; // A pointer to an array of 10 integers g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer h) int (*a )(int); // An array of 10 pointers to functions that take an integer argument and return an integer 人们经常声称这里有几个问题是那种要翻一下书才能回答的问题,我同意这种说法。当我写这篇文章时,为了确定语法的正确性,我的确查了一下书。但是当我被面试的时候,我期望被问到这个问题(或者相近的问题)。因为在被面试的这段时间里,我确定我知道这个问题的答案。应试者如果不知道所有的答案(或至少大部分答案),那么也就没有为这次面试做准备,如果该面试者没有为这次面试做准备,那么他又能为什么出准备呢? Static 6. 关键字static的作用是什么? 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: ?; 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 ?; 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 ?; 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。 大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个应试者的严重的缺点,因为他显然不懂得本地化数据和代码范围的好处和重要性。 Const 7.关键字const有什么含意? 我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着“只读”就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。) 如果应试者能正确回答这个问题,我将问他一个附加的问题: 下面的声明都是什么意思? const int a; int const a; const int *a; int * const a; int const * a const; /******/ 前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由: ?; 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。) ?; 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。 ?; 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。 Volatile 8. 关键字volatile有什么含意?并给出三个不同的例子。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: ?; 并行设备的硬件寄存器(如:状态寄存器) ?; 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) ?; 多线程应用中被几个任务共享的变量 回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。 假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。 ?; 一个参数既可以是const还可以是volatile吗?解释为什么。 ?; 一个指针可以是volatile 吗?解释为什么。 ?; 下面的函数有什么错误: int square(volatile int *ptr) { return *ptr * *ptr; } 下面是答案: ?; 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。 ?; 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。 ?; 这段代码有点变态。这段代码的目的是用来返指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码: int square(volatile int *ptr) { int a,b; a = *ptr; b = *ptr; return a * b; } 由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下: long square(volatile int *ptr) { int a; a = *ptr; return a * a; } 位操作(Bit manipulation) 9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。 对这个问题有三种基本的反应 ?; 不知道如何下手。该被面者从没做过任何嵌入式系统的工作。 ?; 用bit fields。Bit fields是被扔到C语言死角的东西,它保证你的代码在不同编译器之间是不可移植的,同时也保证了的你的代码是不可重用的。我最近不幸看到Infineon为其较复杂的通信芯片写的驱动程序,它用到了bit fields因此完全对我无用,因为我的编译器用其它的方式来实现bit fields的。从道德讲:永远不要让一个非嵌入式的家伙粘实际硬件的边。 ?; 用 #defines 和 bit masks 操作。这是一个有极高可移植性的方法,是应该被用到的方法。最佳的解决方案如下: #define BIT3 (0x1 3) static int a; void set_bit3(void) { a |= BIT3; } void clear_bit3(void) { a = ~BIT3; } 一些人喜欢为设置和清除值而定义一个掩码同时定义一些说明常数,这也是可以接受的。我希望看到几个要点:说明常数、|=和=~操作。 访问固定的内存位置(Accessing fixed memory locations) 10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下: int *ptr; ptr = (int *)0x67a9; *ptr = 0xaa55; A more obscure approach is: 一个较晦涩的方法是: *(int * const)(0x67a9) = 0xaa55; 即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。 中断(Interrupts) 11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。 __interrupt double compute_area (double radius) { double area = PI * radius * radius; printf(" Area = %f", area); return area; } 这个函数有太多的错误了,以至让人不知从何说起了: ?; ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。 ?; ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。 ?; 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。 ?; 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。 ***** 代码例子(Code examples) 12 . 下面的代码输出是什么,为什么? void foo(void) { unsigned int a = 6; int b = -20; (a+b 6) ? puts(" 6") : puts("= 6"); } 这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 ”6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。 因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。 经过在计算机上测试,a+b的值输出为:4294967282, 这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。 13. 评价下面的代码片断: unsigned int zero = 0; unsigned int compzero = 0xFFFF; /*1's complement of zero */ 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero = ~0; 这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。 到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧… 动态内存分配(Dynamic memory allocation) 14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么? 这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是 P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目: 下面的代码片段的输出是什么,为什么? char *ptr; if ((ptr = (char *)malloc(0)) == NULL) else puts("Got a null pointer"); puts("Got a valid pointer"); 这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。 Typedef : 15 Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子: #define dPS struct s * typedef struct s * tPS; 以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么? 这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子: dPS p1,p2; tPS p3,p4; 第一个扩展为 struct s * p1, p2; . 上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。 晦涩的语法 16 . C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成: c = a++ + b; 因此, 这段代码持行后a = 6, b = 7, c = 12。 如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题。 好了,伙计们,你现在已经做完所有的测试了。这就是我出的C语言测试题,我怀着愉快的心情写完它,希望你以同样的心情读完它。如果是认为这是一个好的测试,那么尽量都用到你的找工作的过程中去吧。天知道也许过个一两年,我就不做现在的工作,也需要找一个。
展开>>
收起<<
个人分类:
C语言
|
1777 次阅读
|
3
个评论
基于WCDMA 3G通信模块IM506P的嵌入式TCP&IP方案设计
热度
1
zhongxichuan
2016-6-24 11:25
一、 方案议题综述 移动互联网的普及以及智能家居的发展,物联网的发展,越来越多的小设备,脱机设备亟待接入互联网形成互联互通,与服务提供商连接,提供更新更强服务。但是普通小设备都是低成本非常简单的单片机为主控芯片的,不具备上网功能,更不可能在单片机里面跑TCP/IP协议栈,由此,3G模块具备嵌入式TCP/IP协议栈并提供串口供单片机收发数据,单片机只需提供一路串口,并且把要发送的数据通过串口发送出去,3G模块负责把数据传输到公网的指定主机上,这样单片机就接入互联网了。 今天的课题,我们选用IM506P作为核心元素,IM506P是由睿联通信出品,在车载/移动终端/POS支付等工业领域应用相当广泛的一款模块,性能稳定,接口和业务功能齐全,是我们选择它作为客体主元素的原因。 此课题,意在引导更多互联网因子加入互联网,激发更多实用的业务应用,促进行业发展。 阅者如需了解此模块规格参数,可自行到其官网下载或者网上搜索下载。 二、 主要特性 具备嵌入式TCP/IP的IM506,通过串口和单片机相连作为收发整体,B/S架构下面,单片机既可用作为普通客户端连接云端服务器,与服务器收发数据,并且保持到云服务区的心跳,链接协议支持TCP和UDP,同时支持最大5路socket链接,可以同时和5个服务器保持通信;单片机还可以作为TCP服务器或者UDP服务器,其他客户端可以连接它,进行收费数据,功能非常强大。 下面验证过程将一一呈现出来。 三、 测试拓扑图 四、 TCPUDP服务器主机环境搭建 本测试环境是一个路由器建立局域网内主机和公网的连接,通过设置路由器的NAT将公网端口映射到局域网端口,从而公网主机可以访问局域网内部的TCPUDP服务器主机。 1. 获得本机局域网IP信息 2. 增加NAT端口映射 telecomadmin 密码nE7jA%5m 3. 运行服务管理程序 运行TCP-UDP服务管理 V1.03.exe,如果出现下面警告点否。 4. TCP服务器主机设置 其中自动回复勾选框和透明回复/数据回复 必须在第一次收到数据后才允许选择。当第有一次收到数据后可以根据自己需要进行设置。 5. UDP服务器主机设置 设置好后点击侦听,如下。其中自动回复勾选框和透明回复/数据回复可以根据自己需要进行设置。 6. 获取服务器主机公网IP 获取TCPUDP服务器主机所在局域网的公网IP,最简单的方式如下。 五、 3G模块客户端准备 1. 将RELINK 3G模块扣入开发板 2. 插入联通3G 卡到开发板 3. 串口线把开发板和上位机电脑相连 给3G模块上电,发AT查看联网状态,如下则为OK 六、 TCP协议测试 (一) 正常模式 1. 3G模块发送数据到TCP主机 2. TCP服务器主机接收到3G模块发送过来的数据 此时可对自动回复和透明回复等选项进行操作 (二) 透传模式 3. 设置为透传模式 透传/正常模式必须在+ENETINIT建立网络链接前配置,UDP同样。 4. 透传模式的数据发送与接收 5. 服务器的数据接收与发送 6. 发送”+++”退出透传模式 7. 关闭网络 (三) 多客户端模式 8. 启动多个TCP服务器。 如下图,端口为6801和6802。 9. 客户端SOCKET连接建立 最大支持0~9个客户端SOCKET。 10. 客户端0发送和接收TCP数据 11. TCP服务器主机接收到客户端0的TCP数据并回复 12. 客户端1发送和接收TCP数据 13. TCP服务器主机接收到客户端1的TCP数据并回复 14. 关闭SOCKET并关闭网络 七、 UDP协议测试 (一) 正常模式 1. 3G模块发送数据到UDP主机 2. UDP服务器主机接收到3G模块发送来的数据 3. 关闭链接 (二) 多客户端模式 4. 启动多个UDP服务器。 如下图,端口为7001和7002。 5. 客户端SOCKET链接建立 最大支持0~9个客户端SOCKET。 6. 客户端0发送和接收UDP数据 7. UDP服务器主机接收到客户端0的UDP数据并回复 8. 客户端1发送和接收UDP数据 9. UDP服务器主机接收到客户端1的UDP数据并回复 10. 关闭SOCKET并关闭网络链接 八、 TCPUDP协议混合测试 该场景存在于多客户端模式。 1. 启动多个TCPUDP服务器。 如下图,端口分别为6801和7001。 2. 客户端SOCKET连接建立 最大支持0~9个客户端SOCKET。 3. 客户端0发送和接收TCP数据 4. TCP服务器主机接收到客户端0的TCP数据并回复 5. 客户端1发送和接收UDP数据 6. UDP服务器主机接收到客户端1的UDP数据并回复 7. 关闭SOCKET连接并关闭网络 九、 结束语 这次课题,我们验证了具备嵌入式TCP/IP的IM506,通过串口和单片机相连作为收发整体,B/S架构下面,单片机既可用作为普通客户端连接云端服务器,与服务器收发数据,并且保持到云服务区的心跳,链接协议支持TCP和UDP,同时支持最大5路socket链接,可以同时和5个服务器保持通信;单片机还可以作为TCP服务器或者UDP服务器,其他客户端可以连接它,进行收费数据,功能非常强大。 非常适合做物联网接入点,去扩展突破传统形态的产品,开发更多更实用业务功能,促进行业发展,提供人民生活水平。 此课题的成功完成,得到了模块原厂睿联通信的大力支持,特别是组网和收发流程上面,使得我们少走了很多弯路,特别特别感谢技术支持黄工,每次当我们遇到瓶颈困难的时候,黄工远程过来非常迅速就把问题搞定,我们的课题继续往下走,黄工深厚的技术功底,扎实的通信技术令人佩服。
展开>>
收起<<
1696 次阅读
|
2
个评论
计算机相关专业学习的书单,适应于在校学生阅读
热度
8
蓝人
2016-4-22 13:58
计算机相关专业书单 最近看论坛来了很多在校学生,想想自己离开大学11年了,本人05年大学毕业,但是我自己是99年开始学习计算机,整整学了6年,现在和一些在校同学交流的时候发现一个大问题,就是现在的老师,还是和我们当年一样,老师是念书的(老师照着教课书在上面念),学生是听书的(学生就傻傻的听老师把课本上的文字读一遍)。 但是本人的6年计算机专业学习(三年职业高中计算机专业学习,三年大专),有一些心得,今年可以静下心来好好的写一下这书单的事情。分享一下当年的学习经历,因为不能写成经验,是因为不一定是经验,但是经历还是真实一点儿 那些年,我自己学习了很多计算机语言(高中阶段:C语言、QBASIC、foxpro这个语言,即是语言也是数据库,我们高考还是专业毕业考课,汇编,不过汇编对于我们高中生来说,学起来非常难的,那个时候也只能听个似懂非懂的样子,我自己还有学了一点点VC++不过这个在高中阶段,是完全没有看懂的),当然了,我们也已经在高中阶段,学了计算机原理,操作系统相关的理论课,那个时候非常吃力,不过现在看来,也就这么过来了,最有意思的时候,还有经历了学习MS-DOS,100多条命令,刚刚有windows3.0的时候,好像是12还是16张磁盘发行的,当时我们每个同学都有10来张磁盘,非常有意思的,大家把自己手上的磁盘集中起来,然后试着装起来,好像还是装成功了,到了有用到win95的时候,那一个开心 不过当时学校的电脑都是无盘的,装一次,用完,下课后,又得重来了 想想现在的孩子,好幸福呀,我们那个时候为了能摸到计算机,满世界的跑,能看上几眼都不得了,呵可,现在想想,应该是苦还是甜呢? 因为有了高中的基础,到了大学,再来学习,大学的书籍更多,可以接触到更多东西,再经过三年的大学学习,最终自己基本形成了一些知识结构和知识体系,今天有幸能来分享,希望可以帮到各位学子,那就是最大的慰藉 好了,废话少说了,书单开始 计算机科学导论 这个是对于普高进入计算机专业学习的学生来说,有必要好好看一下 具体的书单,我认为,就不写细的,这个可以多看一下,书名差不多的书,因为国内的书,写的得,编的比较多,一般会是一些学者或教授,用一些时间,去整理出来的,说成作者好像不太合适,编者更加准确,为什么要写成编者,因为是书的内容,原创的比较少了,本人这个帖子,每个字,都是自己码的,文笔有限,大家还是可以称我为这帖子的作者 说说为什么要看很多同名书的事情,当时我自己在学习的时候,看书经历告诉我,很多书的编者在编写时,内容也是大致相同,但是都会稍有不同,主要是因为内容来源的关系吧,一般一书的内容,可以分为几个种方式整理出来,一个是同行同名书,一个是同名外文书,加上整理和翻译,再加上编者的一些个人理解,所以有时候同个术语的解释会有一些不同,有一些会抽像一些,有一些会通俗一些,不过我觉得真正理解了的学者,应该要用更加通俗的语言来表达会更加好,特别是导论类的书籍,读者基本上是一些刚入门的学生。 这个就讲到这里面。 关于一些基础课程,就不表了,因为每个学校基本上都会的,那些作为以后考研或者做研究的同学来说,也要花时间好好学一下,要只是以后出来工作,做一个专业的工程师,我不知道能得上多少,呵可 离散数学 这个课,我们因为是专科,课本非常薄,当时学的时候,也觉得没有什么后,因为是一年级就有开课了,不过后来我们在学数据库原理的时候,就发现了一个问题,很多关于理论方面的课程,其实就是学离散数学的时候,就有讲过了,所以大家在一年级时候,开的一些基础理论课不要不重视,基础没有,就对于后面真正的专业课更难了 计算机编程基础 程序设计基础 教材: 1.《Little Scheme》 2.《How to Design Program》 程序设计原理 教材: 1.《计算机程序设计的构造和解释》 英文名称《The Structure and Interpretation of Computer Programming》简称“sicp”江湖上人称“魔法书” 2.《Concepts, Techniques, and Models of Computer Programming》 ps:如果你读sicp不做里面的习题简直就是暴殄天物,浪费了。 推荐MIT的公开课“计算机科学及编程导论”尽管他们用python取代了scheme。 C语言程序设计基础 教材: 1.《C语言的科学和艺术》 2.《C程序设计的抽象思维》 3.《C语言程序设计》KR 4 .C语言 谭浩强教授的书,书名 不记得了,一般的学校都会有的 以上书目,有点难的,大家可以看一下,是不是要看!! 进阶教材: 1.《C专家编程》 2.《C语言接口与实现:创建可重用软件的技术》 0.009 汇编语言程序设计 教材: 1.《汇编语言》作者:王爽 这可能是本书单中唯一一本中国人写的教材 面向对象程序设计 C++程序设计 教材: 1.《Thining in C++》 2.《C++ Primer》 3.《Effective C++》 4.《深入探索C++对象模型》 ps:C++的经典教材太多了说不定我可以列出20本来,但是初学者还是先打好基础吧。 JAVA程序设计 市面上有很多培训机构的java视频,有些视频讲的真心不错,可以找些看看。 教材: 1.《Thinking in Java》 2.《Effective Java》 3.《Practical Java》 4.《深入理解Java虚拟机》 5.《Java并发编程实践》 计算机核心专业课 数据结构与算法: 教材: 1.算法:C语言实现(第1~4部分) 基础知识、数据结构、排序及搜索 2.算法:C语言实现(第5部分)图算法 或者 3.《算法》第四版(java描述)(本书红黑树讲的奇好比CLRS好百倍) 4.《算法引论:一种创造性的方法》(一本被大家忽略的好书,正如序言说的,如果你没时间请直接看第五章) 5.《编程珠玑》 6.《算法概论》 一本不厚的算法书,作者惜墨如金,字字珠玑。对动态规划的讲解非常的棒! 7.《编程之美》一本很好的习题册 算法分析与设计 教材: 1.《算法引论:一种创造性的方法》 2.《算法导论》 程序设计与计算机系统 教材: 1.深入理解计算机系统 计算机网络 教材: 1.《Head First Network》 2.《Tcp/IP详解卷一:协议》 这方面的书,非常推荐 3.《计算机网络:自顶向下方法》 操作系统(可以拆分成两门独立的课程) 教材: 1.《现代操作系统》 2.《操作系统:精髓与设计原理》 3.《莱昂氏UNIX源代码分析》 4.《现代体系结构上的UNIX系统--内核程序员的SMP和Caching技术》 5.《计算机系统设计原理》 6.《UNIX编程艺术》 7.《鸟哥的Linux私房菜》make your hands dirty,学一学怎么用操作系统吧,各种名目,shell^_^ 听国外读书的朋友讲,学完的之后国外的学生就可以写出一个微型的操作系统内核。 Linux/Unix编程实践: 1.《UNIX环境高级编程》 2.《UNIX编程环境》 3.《Linux/Unix编程实践教材》(这本更适合初学者) 以上书单,只要你以后想从事与编程相关的工作,都要学习的,学的深度与广度,自己适当去把握。 想要从软件工程师,偏纯软件,系统开发(如: mis系统、互联网相关技术研发 ),下面的书单,注意了 数据库 教材: 1.数据库系统导论 2.数据库系统概念 计算机体系结构 教材: 1.《计算机体系结构:量化研究方法》 软件工程: 1. 《人月神话》 本人有读,不过在大学期间,读这本书,有一些不太明白,这个建议就来后,可以再出来翻翻,一定会有新的认识。 2. 《代码大全》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看 3. 《UNIX编程艺术》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看 4. 《梦断代码》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看 5. 《程序员修炼之道:从小工到专家》 这本没有书,可以建议现在还在从事代码和技术开发的朋友看看 数据挖掘与机器学习 数学基础要好,特别是统计学,线性代数可能还需要更高级的随机过程知识 教材: 1.《Machine Learning in Action》 2.《集体智慧编程》 3.推荐斯坦福“机器学习公开课” 4.《统计思维:程序员数学之概率统计》 网络编程: 1.《TCP/IP详解:卷一》 好书 2.《UNIX网络编程(卷1):套接字联网API》 好书 要是可以的,可以深入学习,这个对做深入的通信相的技术研发,有很大帮助 3.《UNIX网络编程.卷2:进程间通信(第2版)》 4.《Java并发编程实践》 java的书,建议先把软件工程相关的知识自己完全能理解了,再去学习,会觉得很容易 5.《HTTP权威指南》 编译原理 本科一定会学的,但是专科好像一般学校都不开,本人也没有认真学过,只学了一些皮毛,不过你要是想成为一大系统架构师,这方面的知识一定要很深,这个想学好,也需要时间和功底的,希望还在学校的同学,抽时间翻翻 教材: 1.《编译原理》:江湖上人称“龙书” 2.《编译原理》:江湖上人称“虎书” 3.还有一本江湖上人称“鲸书”的 4.《编程语言实现模式》一本更“practical”的书籍 5.《程序员的自我修养:编译、链接、与库》近年来中国人写的又一好书。 一门优秀的编译原理课程,在学完之后学生就可以做出来一个简单的编译器。在科大的时候我们正好五次实验最终实现了一个简单的编译器。 设计模式: 《设计模式》 这个在我自己上学的时候,没有学过,不过后来出来工作的时候,大量的项目,都需要,就简单的翻了,没有太深入 教材: 1.《大话设计模式》中国人写的不错的书籍,C#描述 2.《深入浅出设计模式》Head first 系列 3.《敏捷软件开发原则:模式与实践》c++/java 描述 4.《重构:改善既有代码的设计》 5.《重构与模式》 6.《重构与手册》 7.好了最后看GOF的《设计模式》吧。 最后大家读一读《数学之美》吧,非常棒的一本书。 看完以上书单,做了个工程师,大问题是肯定没有了 其他话题 1.编程语言之争: 很多在校大学生冥茫到底该学习哪门语言,哪门语言更好。其实语言无好坏,“尺有所短寸有所长”。这就好比我问“到底是锤子厉害还是水果刀厉害”,如果是用来削苹果当然是水果刀厉害。如果是用来砸石头当然是锤子厉害。每门编程语言都有自己的应用场景,我的建议如下: 1.学好C语言 2.学一门传统的面向对象语言C++、C#、java都可以,按照自己的喜好来 3.学一门函数式语言,比如schme,F#,common lisp,ML等等。这里我推荐学习scheme,因为“sicp”,“hodp”两本及其优秀的书籍都是用scheme来讲编程思想的 4.学一门动态语言比如pyton,ruby等等。我个人比好喜欢python 现在很多人都会说“编程语言不重要,重要的是思想”,其实我是不完全同意的。深入一门语言编程,但不拘泥于一门语言。 一个好的学院应该会有相关的课程包含这些不同编程范式的语言,比如读研的时候,我在数据挖掘课上学的python,在编译工程课上学的ML,在形式化方法课程学的F#,我们还有一门课时讲授动态语言ruby的。当然了,还有专门的实践课javaee平台,c#.net平台,等等。计算机专业是实践性非常强的学科,没有累计一定的代码量是不行的。10W行,没错,希望大家在本科四年能够累积10W行的代码量。没必要读研了。如果你读了本书单中的大部分书的话。 2.看英文书还是翻译的 大家看我推荐的书单就知道了,我都是写的中文名字。这并不代表我不推荐大家看英文原著。我的观点是,当你进入一个新领域第一本往往得看中文版翻译版的,因为看英文版的有很多术语你看不明白,这样进度会比较慢,打击自信心。反正我是这样的,我学任何陌生领域的第一本书看的都是中文翻译的,以后的书籍基本上就是如果翻译的好就看中文版的,典型的如《unix编程艺术》翻译的就非常好。翻译不好的就看英文版的,比如编译原理课程里面提到的“虎书”的java描述版就翻译的奇差,只能看英文版的。 3.有这些书单就够了吗? No,学好一门课程需要非常多的动手实践,计算机专业尤其如此。一门优秀的课程往往得配上非常好的实验课程。比如《深入理解计算机系统》这门课的实验就非常的棒,令我印象最深刻的要数“二进制炸弹”了。当时我们大家都在拆弹,拆的不亦乐乎。可见cmu的老师非常用心的设计了这些实验,但是中国的教育呢? 很少有拿的出手的原创课程吧?大学老师们,你们用点心教学生吧!同学们你们用点心学吧。 如果您是工作一族那么读一读用红色标记的部分吧。 last but not the least 书单中尚有漏网之鱼,日后补上。手头还有很多事要忙,就此搁笔。 关于其他专业的书单,其他人也可以补充,或者我再找一些牛人来分享 以上书单,适应于计算机相关专业或与计算机有关的专业,来学习。 如果大家有疑问或者建议可以联系我 ,也可以加QQ群 Android开发交流群 85642418 物联网技术交流群 499804627 嵌入式技术交流群 511424454
展开>>
收起<<
7329 次阅读
|
3
个评论
更多...
小广播
一牛网是干什么的?1分钟了解一牛网
一牛网5G产品及方案:mtk5G/高通5G核心板/5GCPE/5G相关仪器
wifi6方案(IPQ807X/IPQ6000/QCA9984/MT7622/MT7621A)及整机定制
各类带AI算力开发板/定制(mtk/海思/算能/sigmastar/amlogic/rk等)
珠海海奇半导体A/B/C/D/E系列产品性能参数介绍
热门推荐
一牛MTK技术交流QQ群:947753880
MTK方案定制,请联系
13316559917
(
微信同号,加号请备注:MTK
)
MTK系列开发板/核心板:
MTK5G-MT6853开发板
MTK5G-MT6873开发板
MT6771-4G核心板
mt8788 AI智能模块
MT6763开发板
MT6762开发板
MT6761开发板
MT6765开发板
MT6757芯片核心板
MT6753核心板
MT6739开发板
更多开发板点击查看
相关词条
LAN
WAN
OSI
kernerl
Buildroot
RTX51
Framework
UCOSIII
ADI
opencv
Xilinx
HFSS
Ubuntu
OPENWRT
信号完整性
navigation
C语言
system
嵌入式
Windows
shiro
FastDFS
Linux
GPIO
信号发生器
python
Java
热门资料下载
RK3368 V1.0_PCB文件.zip
必须弄懂的495个c语言问题.pdf
MT6356_PMIC_Data_Sheet_V1.3.pdf
很好的MTK-Android资料.doc
LinkIt_Assist_2502_pin_out_v1_0 .pdf
MT7623N_Datasheet_preliminary (1).pdf
MT7623A_Datasheet_preliminary (1).pdf
MediaTek_LinkIt_Assist_2502_Hardware_Reference_Design_v1_1.zip
4G IMEI 写号神器.rar
关于我们
关于我们
加入我们
新闻动态
联系我们
服务支持
官方商城
隐私声明
常见问题
论坛总则
合作/建议
TEL: 19168984579
工作时间:
周一到周五 9:00-11:30 13:30-19:30
扫一扫关注公众号
扫一扫打开小程序
Copyright © 2013-2024
一牛网
版权所有
All Rights Reserved.
帮助中心
|
隐私声明
|
联系我们
|
手机版
|
粤ICP备13053961号
|
营业执照
|
EDI证
搜索
扫一扫添加微信客服
QQ客服
返回顶部
返回顶部