GitHub - 08183080/intel-intern: 我在intel的cmrc组实习日记

我在英特尔的client mrc组, client pc的内存初始化模块

2023年

12月 【系统 日志模块篇】

  • 12/18 入职报道, 领hp笔记本, 配置环境| 接下来要学习uefi, bios... | BIOS(基本输入输出系统)是计算机启动时运行的第一个软件,它负责初始化和测试系统硬件,以及加载操作系统
    • 【梯子配置】询问后, 关掉windows的设置的网络的proxy的自动挡, 手动挡无误复制小虎的info, 一切ok~
    • 【权限申请】申请1Source访问代码的权限
    • 【强大微软】外企用微软的全系列产品呀, onenote + office + outlook + vscode + github + teams...
    • 【学习路线】熟悉我所在组的基础, 活学活用好进步
      • BIOS基础
      • Client MRC team的笔记
      • uefi基础 (参考yipeng的视频)
      • bios和uefi的关系和区别
      • 温习和熟练c语言和汇编语言编程
      • 和我的buddy小虎密切交流学习
      • 理解 UEFI 的基础 | 研究 Intel 平台的 UEFI 实现
      • 获得权限之后, 阅读MRC的项目代码
      • 我未来主要做: CCC的自动化测试开发
      • 12/24之前, 完成课程培训, 然后再去申请...
    • 【未来】 机会无处不在, 社会越复杂机会越多, 就在细微处, 要冷静和充满耐心, 藏锋守拙
  • 12/19 NEO培训, Xiaoguo Liang架构师
  • 12/21 实习第一周, 熟悉
    • 完成【软件开发中的保密管理】课程, 申请1Source的基本权限
    • 大公司, 权限很多很多。。。
    • 了解电脑开机自启的globalprotect就是公司的vpn
    • 了解bios和uefi的关系和区别, 仔细阅读uefi的wiki
    • 在intel要去搞固件开发, 就是硬件了, 以后可以找嵌入式公司工作, 熟悉嵌入式, respect...
    • 开会, 小虎给我讲了一下整个流程...
  • 12/22 冬至, 组会
    • 完成我需要的所有权限的申请
    • 感觉每次开完会议都可以把要点记录一下, 好督促自己下一步的行动
    • 去熟悉了解一下cmrc的代码
  • 12/25 团建
  • 12/26 听 yipeng讲课, row, col, bank, chip, rank, dimm, channel等等...
  • 12/27 remote办公, 完成【程序实时读取com保存日志】功能
  • 12/28 完成虎哥交给我的实时读取文件最新内容模块
  • 12/29 下午在宿舍完成读取client

2024年

1月 【系统 日志模块篇】

  • 1/2 在学校图书馆, 用学校免费的水电, 完成 serial-listener项目的client write部分|和虎哥沟通, 了解下一步需求, 继续封装
  • 1/3 切换githubdesktop的邮箱为公司内部邮箱, git clone下来cmrc_testing的代码, 发起pr
  • 1/3 和雪山sync, 他教会我lock机器, 这样就不会触发自动化测试
  • 1/3 寄了, 发现写的程序不能很好支持多client读取。。。| 解决设置多线程响应请求
  • 1/4 上午, 来公司onsite办公, 发现可调节的电脑的鼠标不灵敏了。。。GG
  • 1/4 今天可以完成intel的伦理training & 在AGS申请机房的权限
  • 1/4 完成代码封装成类的标准化
  • 1/4 中午听到一个有趣的discuss, 软件和硬件的关系是什么, 是软件领导硬件, 还是硬件领导软件?
  • 1/4 发现有个问题, 我需要将server完全变成dameon运行, 不在cmd这样的terminal显示的...
  • 1/5 发现问题, 我加的global只对当前运行的程序有用, 就是骗人的。。
  • 1/8 专门让server作为dameon线程运行, 但是似乎我启动了多个server。。。
  • 1/9 凌晨起床, 解决server启动多个的问题|用端口监听策略解决
  • 1/9 虎哥teach我项目1个pr解决1个完整问题
    • 熟悉git命令操作
  • 1/9 晚上和zy聊天, 发现server可以用single pattern desgin
  • 1/10 解决网络梯子代理问题
    • windows上的setting设置把automatic的全部设置off, manual的全部设置on,我的浏览器就可以访问google了
  • 1/10 虎哥 code review, 提出修改意见
  • 1/11 基本上将虎哥的建议都解决了, read interval time data
  • 1/12 将所有工作交给server处理, client轻量化| 直接read/write块状的data, 精简代码| 虎哥的code review很不错
  • 1/15 继续精细化完成代码, 感觉无误了|参加公司年会
  • 1/16 开始尝试将我写的模块merge进来
  • 1/17 和xueshan交流了解如何融入我的代码
  • 1/18 在学校remote办公, 清一色替换成read()方法有点问题
  • 1/18 工资到账, 2240 RMB, super happy
  • 1/19 中午和虎哥吃饭, 虎哥点醒我2个client存在的位置, 排查问题发现client的read()函数写的太绕, 没return & bytes类型的数据就不要b''.join()了直接切片取, 以上, 问题解决
  • 1/22 我写的软件初步落地成功, 满足|xueshan哥可以成为技术合作伙伴
  • 1/23 倒腾涛哥给我的server搞好了|和小董哥聊天, 他让我多和组内人员one-one学习核心技术|排查问题, 解决mini bios问题|芯片bios核心技术之spec和code的对应
  • 1/24 涛哥给我展示板子上的哥各个芯片, 运行LNL发现超时。。。
  • 1/25 在公司听非诚勿扰的黄菡老师讲亲密关系
  • 1/25 发现mini bios的代码部分有点问题
  • 1/26 摸鱼摆烂和xueshan哥闲扯聊天, 下周回家! 下周解决mini bios问题
  • 1/27 测试测试mini bios的代码部分|本地客户端测试mini bios似乎没问题了|准备服务端测试一下
  • 1/29 居家办公, 发现开启测试用例之后不能很好trigger
  • 1/30 白天和朋友一块去看电影, 晚上回来解决问题很有灵感|tao哥三下五除二帮助我解决问题
    • 本地client机器测试代码的时候, 切换到分支实验, 实验结束记得切换回去
    • vspe.py调用其中的start()和stop()可以有效管理虚拟串口功能的开和关
    • 触发脚本之后,脚本就不要关, 等它结束更新数据库的host状态!
    • server机器存储着client这么多机器的运行数据呢, 可以用navicat查看
  • 1/31 虎哥一句话点醒我问题所在: mini bios读取的时候sleep

2月 【代码部署篇】

  • 2/1 跑了2个实验, 现在比较熟悉流程了
    • 虎哥指点下, 我的代码终于合并了, 但是代码还不鲁棒|明天测试一下
    • 虎哥安利一个日志diff比对软件beyond
    • 明天和xueshan, tao哥一起call一下
  • 2/2 和xueshan哥以及涛哥call了一下, xueshan哥验证了一下代码没啥问题, 预计今晚大规模部署
  • 2/2 爬虫项目被催, 这周末加班干掉爬虫项目
  • 【下周】将【Bios开发】的权限申请干完
  • 2/4 在老美的12H机器上出现一个问题, get_first_pos服务失败, 明天去排查一下!
  • 2/5 time.sleep(10)延时解决昨天的问题
  • 2/5 解决新问题: 老美的几台机器出现端口占用了|首先检测空端口, 然后启用空端口...
  • 2/6 排查发现新问题, 就是有些机器譬如shcmrc26上面iboss会屏蔽任意端口的服务。。。
  • 2/7 加个http的proxy的代理是None解决问题|可以采用去中心化的方式更简单去做Dece...
  • 2/8 完成bios dev的权限申请需要的那些课程, 形式主义罢了...
  • 2/8 看书的时候看到这句绑定到0端口, DNA动了
  • 2/9 公司机器pip install --proxy=xxx pyinstaller安装成功,成功生成两个exe有待测试|加上time.sleep(10) 解决一些机器kill putty之后打开串口失败的问题
  • 2/19, 今天发工资了上个月6160, 今天开工! pyinstaller打包run.py问题是很多乱七八糟的目录文件import
  • 2/20, 上午简单工作, 学会如何把cosole的log保存文件以待分析(run.exe > run.log 2>&1), 但是有个文件死活找不到可恶! pyinstaller打包都是坑据说, 慢慢摸索摸索吧
  • 2/21, 排查确实是configupdater这个python包找不到, configupdater-> ConfigUpdater
  • 2/22, 上午, 参加【cmrc full stuff】会议, CMD就是Client Memory Dev, CCC就是CMD Control Center!
  • 2/22, 解决了之前困扰的问题, pyinstaller没有安装在虚拟环境里面原来!同时要降低它的安装版本!|python项目的最佳实践是每个项目都整一个虚拟环境
  • 2/22, 导出test.exe之后, 在导出的那台机器上测试是无误的, 这个exe可以拿到另一台机器直接试一试...
  • 2/23, 今天纯纯摆子, 可以下次生成pyinstaller的时候设置log level这样不会产生太多的无关信息| 粗略看了眼github action release: https://github.com/actions/create-release
  • 2/26, 公司搬砖, 纯纯摆子,早早开溜, 晚上抽空初次体验一下github action release吧
  • 2/27, 网友面基, 今天纯纯摆子hhh, 绝了
  • 2/28, 居家躺平, 主打摆烂
  • 2/29, 居家躺平, 继续摆烂, 当个摆子

3月 【运维 CI/CD篇】

  • 3/1, 昨天听闻xueshan等3个外包全被kill掉, 一时之间兔死狐悲|今天效率高涨, 完成github的hello.yml和CI第一次亲密接触
  • 3/4, 给大repo写yaml, push访问仓库失败受限
  • 3/5, 尝试给公司intel-andbox的repo申请权限
  • 3/6, 大repo申请权限最后尝试: Cannot transfer fork repository, please contact 1Source support to unfork
    • 新的尝试, 首先将cmrc项目变到intel-source中
    • 其次, 将大项目中cmrc依赖的文件都搬到cmrx项目的一个branch中来
    • 【方法论】遇事不决, 可多多翻一下公司内部的wiki
    • cmrc-testing项目已经在公司内部提交权限申请, just wait it
  • 3/7, 找人询问了解到: 你要申请repo需要自己创建repos.yml 具体可以参考1source, 看文档 1source.intel.com, 明天出发去嘉兴
  • 3/11, 回到上海, 摆烂没干活
  • 3/12, 得到intel正式员工被裁50%的消息, 我也要另谋出路了, 今天排查问题发现github actions设置self-hosted machine会出现问题, 原因是网络请求问题? 设置代理了
    • 和daren哥聊天, 我意识到一个惊人问题, 我荒废了
  • 3/13, 参观optiver, self-hosted似乎是网络认证失败!
  • 3/14, 昨天的问题归根到底还是ps的proxy设置不行, 全局设置+restart
    • root cause是cmd的命令并不完全在ps中兼容, 就比如说cmd中是set设置临时性环境变量, ps中set没有卵用也不会报错, 必须$env:
  • 3/15, 今天写yaml脚本, 成功把战线推进到pyinstaller这一步了
  • 3/18, 今天将那个大repo的run.exe合成了, 和虎哥交流, 了解进一步工作
    • cmrc那个repo已经不依赖其他内部代码软件了, 完全独立模块了
    • 可以用pipenv先创建python虚拟环境,然后把依赖依次安装, 然后导出exe
  • 3/19, 领取上个月的工资, 在intel干干干
    • 将scripts路径配置到path, 解决pwsh找不到pipenv路径问题
    • 虎哥安利用virtualenv创建虚拟环境
    • 依赖包保证最少依赖
    • 公司内部的包用公司内部的脚本来搞
  • 3/20, 推进virtualenv的使用
    • virtualenv创建虚拟环境成功, 用代理可以下载, 但是最小依赖的包有哪些, 我安装functools失败
    • darrren哥给我share讲了讲pcie的作用, 以及分享pciie协议的spec文档
    • pcie是芯片内部各个ip之间通信的标准,至于spi则是低速的
    • 芯片协议通信的spec文档就相当于九阴真经, 亘古兼容
    • bios所做的就是提供给os地址表memeory map
  • 3/21, 继续解决部署导出exe的问题
    • 分析出我只需要单独安装公司内部的pysvtoosl.xmlcli包, 这个是来改bios的knob的
  • 3/22, 摆烂
  • 3/25, 今天和我的manager聊天,了解到一些情况
    • cythyia的老大被干掉了, 接下来估计4月份cmrc team也要被干掉,就算没被干掉, FST因为budget问题不会再招实习生了,所以死劲薅羊毛吧
    • 今天遇到的问题就是 python --version失败。。。
  • 3/26, 平稳推进
    • 【问题梳理】我在进行github action的时候,我拿一台机器作为self-hosted machine,然后在这上面分别给两个repo各设置一个action runner,触发之后都会在这个机器的action runner上跑(两个runner设置的唯一不同我目前感觉的是目录自定义吧,小repo的目录名设置全都是默认的),但是大repo跑的ok,我检查path环境变量输出包含python路径,小repo跑的不ok,我检查path变量打印则是没包含python路径。
  • 3/27, 摆烂式推进
    • 在CI脚本中直接打印当前用户, 发现cmrc项目登录的不是 管理员 剩下的几天, 摆烂摸鱼看闲书钱照拿, 自从和我的manager聊天之后了解了核心问题, 我就压根一点都不羞愧hhh

4月 【CPU Bios篇】

  • 4/1, 久颓复振
    • 上午翻阅邮件, 搜寻有价值信息, 才了解我的电脑是core第10代, 第12代是ADL芯片(内部), 2024发布第14代对应内部型号LNL
    • 下午yipeng教我说辞: 给intel最新内部绝密的概念芯片提供了验证的算力支持
    • 下午阅读这篇文章: CPU早已经不只是CPU了 Intel酷睿Ultra详解
    • 下午随便浏览intel内部wiki科普, 明天继续来图书馆一楼hhh
  • 4/2, 将 多线程 改造成 多进程, 遇到问题。。。
    • 进程设置成守护进程之后会有问题的, 不能这么搞
    • http server优点问题。。。。
  • 4/3, 下午回宿舍看ai agent视频去了
    • 问题就是卡在多进程那里, http server的那部分代码我不是很理解
    • 改善学习模式, 今天我写了篇一日一技: 【一日一技】最近的多Client串口读写模块梳理 通过写文章我梳理清楚了请求方法处理类和Server类的一些微妙关系, 同时通过code agent工具, 对于python函数初始化时候的位置参数*args和关键词参数**kwargs有了了解, 事实上我们基本都是kwags参数
  • 4/9, 前面两天记得打卡
    • 独立地测试一下 http server部分
  • 4/11, 多线程改造多进程卡壳, 把代码更新保存在那里转战继续 action
  • 4/13, 晚上宿舍无聊, 看了这个bios启动视频 https://intel.sharepoint.com/sites/sfp/training/SitePages/Architecture-Domain-training.aspx, 很有意思

4月 【重生 Server mrc篇】

  • 4/22,虎哥这边的 cmrc team 被干掉了,我来到了高手云集的 server mrc,smr team,今天 阳顶天 andy 成为我的 buddy,我要找他多学学

常思考, 核心问题

  • 我在Intel实习的半年, 我都能学到什么?
  • 我在Intel还有2个月, 我在这2个月学什么?
  • 我如何在Intel达到最大的学习收益?
  • 我在Intel最重要的人/事是啥呢?(感谢daren哥提醒)
  • 我做的工作/事业/产品的不可替代性有多少?
  • Intel最核心的黑科技是啥? 是cpu, bios以及一系列的技术沉淀