git clone 非标准ssh端口(22)怎么办
git clone ssh://git@host:port/path/xx.git git clone ssh://git@host:port/path/xx.git enca -L zh_CN -x utf-8 * #include <iostream>
#include <string>
//链表结构
template <typename T>
struct Node
{
T data;
Node<T>* next = nullptr;
};
//定义栈抽象类LinkStack
template <typename T>
class LinkStack
{
public:
LinkStack();
~LinkStack();
public:
bool isEmpty();
int size();
void push(T&& data);
T pop();
T top();
private:
Node<T>* phead = nullptr;
int count;
};
template <typename T>
LinkStack<T>::LinkStack()
:phead(new Node<T>),count(0)
{
std::cout << std::hex << this << std::dec << ": run LinkStack constructor" << std::endl;
std::cout << "new Node phead: " << std::hex << phead << std::dec <<std::endl;
};
template <typename T>
LinkStack<T>::~LinkStack()
{
std::cout << std::hex << this << std::dec <<": run LinkStack destructor" << std::endl;
Node<T> * temp = nullptr;
while (nullptr != phead)
{
temp = phead->next;
std::cout << "delete Node: " << std::hex << phead << std::dec << " -> " << phead->data << std::endl;
delete phead;
phead = temp;
}
};
//栈大小
template <typename T>
int LinkStack<T>::size()
{ return count; };
//空栈
template <typename T>
bool LinkStack<T>::isEmpty()
{ return count == 0; };
//插入
template <typename T>
void LinkStack<T>::push(T&& data)
{
Node<T> *pnode = new Node<T>;
std::cout << " -->> new Node: " << std::hex << pnode << std::dec <<std::endl;
std::cout << " push data: " << data << std::endl;
pnode->data = data;
pnode->next = phead->next;
phead->next = pnode;
count++;
};
//弹出
template <typename T>
T LinkStack<T>::pop()
{
if(nullptr != phead->next) //判断空栈
{
Node<T>* pdel = phead->next;
std::cout << " <<-- delete Node: " << std::hex << pdel << std::dec <<std::endl;
std::cout << " pop data: " << pdel->data << std::endl;
phead->next = phead->next->next;
T data = std::move(pdel->data);
delete pdel;
count--;
return data;
} else
throw std::out_of_range("空栈");
};
//获取栈顶元素
template <typename T>
T LinkStack<T>::top()
{
if(nullptr != phead->next)
return phead->next->data;
else
throw std::out_of_range("空栈");
};
int main()
{
LinkStack <std::string> lstack;
std::cout << "new lstack: " << std::hex << &lstack << std::dec <<std::endl;
lstack.push("LinkStack Hello");
lstack.push("0123456789");
lstack.push("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
lstack.push("abcdefghijklmnopqrstuvwxyz");
std::cout << "Stack.size()=" << lstack.size() << std::endl;
std::cout << "Stack top data=" << lstack.top() << std::endl;
//输出栈
while(!lstack.isEmpty())
{ lstack.pop(); }
//int lstack2
auto lstack2 = new LinkStack<int>;
std::cout << "new lstack2: " << std::hex << lstack2 << std::dec <<std::endl;
lstack2->push(100);
lstack2->push(200);
lstack2->push(300);
lstack2->push(400);
lstack2->push(500);
lstack2->push(600);
std::cout << "Stack2->size()=" << lstack2->size() << std::endl;
std::cout << "Stack2 top data=" << lstack2->top() << std::endl;
//弹出栈顶元素
lstack2->pop();
delete lstack2;
std::cout << "delete lstack2: " << std::hex << lstack2 << std::dec <<std::endl;
return 0;
}

IPL
CPU上电后首先跑到的是rom code,顾名思义代码保存在特殊的ROM中,且是只读的。ROM code跑完后会读取NOR Flash 0地址的位置,这个位置就是IPL文件存放的位置,IPL里主要功能是做一些基础的硬件初始化,例如设定当前DDR参数,以及GPIO/IIC相关等。
IPL_CUST
IPL初始化的是一些共有的硬件模块,IPL_CUST中会根据当前板子的实际情况初始化客制化板子硬件的可执行的二进制文件,例如客制化的GPIO管教,IIC配置。
MXPT
分区配置相关的二进制档案。
UBOOT
UBOOT的二进制文件存放分区。
UBOOT_ENV
UBOOT的环境变量存放分区。
LOGO
在NVR设备上会使用,存放的是开机logo相关的配置。
SPI-NOR的BOOT分区中的内容是不建议改动的,若有不符合公板release的地方,可能会导致系统无法启动。
BOOT的位置在linux在mtd block0的位置上,对应的设备节点/dev/mtdblock0。
BOOT分区之后的分区,统称为SYS分区,SYS分区是可以修改的,根据实际的使用情况,大致分为四个类别:
KERNEL
存放内核的二进制文件。
ROOTFS
如题。
miservice
这是公板定义的一个分区,它用来存储mi的库、一些配置文档,文件系统默认jiffs2。
customer
用户自己定制的分区。